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