Changeset: 82b15bc525e0 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=82b15bc525e0
Modified Files:
        sql/common/sql_mem.c
        sql/include/sql_mem.h
Branch: Jul2017
Log Message:

When ALLOCDEBUG flag is enabled print information about sa_* allocations.


diffs (116 lines):

diff --git a/sql/common/sql_mem.c b/sql/common/sql_mem.c
--- a/sql/common/sql_mem.c
+++ b/sql/common/sql_mem.c
@@ -78,6 +78,8 @@ sql_allocator *sa_reset( sql_allocator *
        return sa;
 }
 
+#undef sa_realloc
+#undef sa_alloc
 char *sa_realloc( sql_allocator *sa, void *p, size_t sz, size_t oldsz )
 {
        char *r = sa_alloc(sa, sz);
@@ -123,6 +125,7 @@ char *sa_alloc( sql_allocator *sa, size_
        return r;
 }
 
+#undef sa_zalloc
 char *sa_zalloc( sql_allocator *sa, size_t sz )
 {
        char *r = sa_alloc(sa, sz);
@@ -143,6 +146,7 @@ void sa_destroy( sql_allocator *sa )
        GDKfree(sa);
 }
 
+#undef sa_strndup
 char *sa_strndup( sql_allocator *sa, const char *s, size_t l) 
 { 
        char *r = sa_alloc(sa, l+1); 
@@ -154,6 +158,7 @@ char *sa_strndup( sql_allocator *sa, con
        return r; 
 }
 
+#undef sa_strdup
 char *sa_strdup( sql_allocator *sa, const char *s ) 
 { 
        return sa_strndup( sa, s, strlen(s));
diff --git a/sql/include/sql_mem.h b/sql/include/sql_mem.h
--- a/sql/include/sql_mem.h
+++ b/sql/include/sql_mem.h
@@ -78,4 +78,76 @@ extern size_t sa_size( sql_allocator *sa
 
 #define _strlen(s) (int)strlen(s)
 
+#if !defined(NDEBUG) && !defined(STATIC_CODE_ANALYSIS) && defined(__GNUC__)
+#define sa_alloc(sa, sz)                                               \
+       ({                                                              \
+               sql_allocator *_sa = (sa);                              \
+               size_t _sz = (sz);                                      \
+               void *_res = sa_alloc(_sa, _sz);                        \
+               ALLOCDEBUG                                              \
+                       fprintf(stderr,                                 \
+                               "#sa_alloc(" PTRFMT "," SZFMT ") -> " PTRFMT \
+                               " %s[%s:%d]\n",                         \
+                               _sa, _sz, PTRFMTCAST _res,              \
+                               __func__, __FILE__, __LINE__);          \
+               _res;                                                   \
+       })
+#define sa_zalloc(sa, sz)                                              \
+       ({                                                              \
+               sql_allocator *_sa = (sa);                              \
+               size_t _sz = (sz);                                      \
+               void *_res = sa_zalloc(_sa, _sz);                       \
+               ALLOCDEBUG                                              \
+                       fprintf(stderr,                                 \
+                               "#sa_zalloc(" PTRFMT "," SZFMT ") -> " PTRFMT \
+                               " %s[%s:%d]\n",                         \
+                               _sa, _sz, PTRFMTCAST _res,              \
+                               __func__, __FILE__, __LINE__);          \
+               _res;                                                   \
+       })
+#define sa_realloc(sa, ptr, sz, osz)                                   \
+       ({                                                              \
+               sql_allocator *_sa = (sa);                              \
+               void *_ptr = (ptr);                                     \
+               size_t _sz = (sz);                                      \
+               size_t _osz = (osz);                                    \
+               void *_res = sa_realloc(_sa, _ptr, _sz, _osz);          \
+               ALLOCDEBUG                                              \
+                       fprintf(stderr,                                 \
+                               "#sa_realloc(" PTRFMT "," PTRFMT "," SZFMT "," 
SZFMT ") -> " PTRFMT \
+                               " %s[%s:%d]\n",                         \
+                               _sa, PTRFMTCAST _ptr, _sz, _osz,        \
+                               PTRFMTCAST _res,                        \
+                               __func__, __FILE__, __LINE__);          \
+               _res;                                                   \
+       })
+#define sa_strdup(sa, s)                                               \
+       ({                                                              \
+               sql_allocator *_sa = (sa);                              \
+               const char *_s = (s);                                   \
+               char *_res = sa_strdup(_sa, _s);                        \
+               ALLOCDEBUG                                              \
+                       fprintf(stderr,                                 \
+                               "#sa_strdup(" PTRFMT ",len=" SZFMT ") -> " 
PTRFMT \
+                               " %s[%s:%d]\n",                         \
+                               _sa, strlen(_s), PTRFMTCAST _res,       \
+                               __func__, __FILE__, __LINE__);          \
+               _res;                                                   \
+       })
+#define sa_strndup(sa, s, l)                                           \
+       ({                                                              \
+               sql_allocator *_sa = (sa);                              \
+               const char *_s = (s);                                   \
+               size_t _l = (l);                                        \
+               char *_res = sa_strndup(_sa, _s, _l);                   \
+               ALLOCDEBUG                                              \
+                       fprintf(stderr,                                 \
+                               "#sa_strndup(" PTRFMT ",len=" SZFMT ") -> " 
PTRFMT \
+                               " %s[%s:%d]\n",                         \
+                               _sa, _l, PTRFMTCAST _res,               \
+                               __func__, __FILE__, __LINE__);          \
+               _res;                                                   \
+       })
+#endif
+
 #endif /*_SQL_MEM_H_*/
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to