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

Reply via email to