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 -- [email protected]
To unsubscribe send an email to [email protected]