Changeset: 46698f698796 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/46698f698796 Modified Files: gdk/gdk_utils.c sql/server/sql_mvc.c sql/server/sql_mvc.h Branch: Jun2023 Log Message:
Use __builtin_frame_address builtin function to get stack address. This function is available in both GCC and CLANG. diffs (51 lines): diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c --- a/gdk/gdk_utils.c +++ b/gdk/gdk_utils.c @@ -1622,10 +1622,14 @@ THRget(int tid) static inline uintptr_t THRsp(void) { +#if defined(__GNUC__) || defined(__clang__) + return (uintptr_t) __builtin_frame_address(0); +#else int l = 0; uintptr_t sp = (uintptr_t) (&l); return sp; +#endif } static inline Thread diff --git a/sql/server/sql_mvc.c b/sql/server/sql_mvc.c --- a/sql/server/sql_mvc.c +++ b/sql/server/sql_mvc.c @@ -794,7 +794,11 @@ mvc_create(sql_store *store, sql_allocat m->pa = pa; m->sa = NULL; m->ta = sa_create(m->pa); +#if defined(__GNUC__) || defined(__clang__) + m->sp = (uintptr_t) __builtin_frame_address(0); +#else m->sp = (uintptr_t)(&m); +#endif m->params = NULL; m->sizeframes = MAXPARAMS; diff --git a/sql/server/sql_mvc.h b/sql/server/sql_mvc.h --- a/sql/server/sql_mvc.h +++ b/sql/server/sql_mvc.h @@ -319,8 +319,13 @@ extern int symbol_cmp(mvc* sql, symbol * static inline int mvc_highwater(mvc *sql) { - int l = 0, rc = 0; +#if defined(__GNUC__) || defined(__clang__) + uintptr_t c = (uintptr_t) __builtin_frame_address(0); +#else + int l = 0; uintptr_t c = (uintptr_t) (&l); +#endif + int rc = 0; size_t diff = c < sql->sp ? sql->sp - c : c - sql->sp; if (diff > THREAD_STACK_SIZE - 280 * 1024) _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org