Changeset: 7bda282f0660 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7bda282f0660
Modified Files:
gdk/gdk_utils.mx
Branch: default
Log Message:
Replace MX macros with CPP macros; remove GDK_MEM_TRACE code.
diffs (truncated from 625 to 300 lines):
diff --git a/gdk/gdk_utils.mx b/gdk/gdk_utils.mx
--- a/gdk/gdk_utils.mx
+++ b/gdk/gdk_utils.mx
@@ -369,22 +369,26 @@ int GDK_mem_allocs = 0;
int GDK_vm_trim = 1;
/* at least each 50M of memory increase, BBPtrim is run */
-#define CHKMEM(meminc, vminc) do { \
- int memchk, vmchk; \
- malloc_lock(); \
- memchk = (meminc>0 && (++GDK_mem_allocs>=1000 ||
meminc>LL_CONSTANT(50000))); \
- vmchk = (vminc>0 && (++GDK_vm_allocs>=10 ||
vminc>LL_CONSTANT(5000000))); \
- malloc_unlock(); \
- if (memchk || vmchk) GDKmemchk(memchk, vmchk); \
-} while (0)
+#define CHKMEM(meminc, vminc) \
+ do { \
+ int memchk, vmchk; \
+ \
+ malloc_lock(); \
+ memchk = (meminc>0 && (++GDK_mem_allocs>=1000 ||
meminc>LL_CONSTANT(50000))); \
+ vmchk = (vminc>0 && (++GDK_vm_allocs>=10 ||
vminc>LL_CONSTANT(5000000))); \
+ malloc_unlock(); \
+ if (memchk || vmchk) \
+ GDKmemchk(memchk, vmchk); \
+ } while (0)
#define SEG_SIZE(x,y)
((x)+(((x)&((1<<(y))-1))?(1<<(y))-((x)&((1<<(y))-1)):0))
#define MAX_BIT ((int) (sizeof(ssize_t)<<3))
/* histogram update macro */
-#define GDKmallidx(idx,size) \
- { \
+#define GDKmallidx(idx, size) \
+ do { \
int _mask; \
+ \
if (size < 128) { \
_mask = (1<<6); \
idx = 7; \
@@ -396,16 +400,12 @@ int GDK_vm_trim = 1;
if (_mask&size) break; \
_mask >>=1; \
} \
- }
+ } while (0)
volatile size_t GDK_mallocedbytes_estimate = 0;
static ssize_t GDK_mem_cursize = 0;
static ssize_t GDK_vm_cursize = 0;
-#ifdef GDK_MEM_TRACE
-static int mtrace = 0;
-#endif
-
#ifndef NDEBUG
static MT_Lock mbyteslock;
#define malloc_lock() gdk_set_lock(mbyteslock, "malloc")
@@ -624,108 +624,106 @@ GDKmem_heapcheck(int t)
GDK_heapcheck_last = t;
}
-/*
- * @- heapinc(size_t _memdelta, void* _blk)
- */
-@= heapinc
- {
- size_t _memdelta = (size_t) @1;
-#ifdef GDK_MEM_TRACE
- void* _blk = (void*) @2;
-
- if (mtrace) {
- int _idx = add_stack(stackBat);
-
- add_mem(memBat, _blk, _idx);
- }
-#endif
- malloc_lock();
- GDK_mallocedbytes_estimate += _memdelta;
- malloc_unlock();
#ifdef GDK_MEM_KEEPHISTO
- {
- int _idx;
-
- GDKmallidx(_idx, _memdelta);
- GDK_nmallocs[_idx]++;
- }
-#endif
- }
-
-@
- * @- heapdec(size_t memdelta, void* _blk)
-@= heapdec
- {
- size_t _memdelta = (size_t) @1;
-#ifdef GDK_MEM_TRACE
- void* _blk = (void*) @2;
-
- if (mtrace) {
- del_mem(memBat,_blk);
- }
+#define heapinc(_memdelta) \
+ do { \
+ int _idx; \
+ \
+ malloc_lock(); \
+ GDK_mallocedbytes_estimate += (_memdelta); \
+ malloc_unlock(); \
+ GDKmallidx(_idx, _memdelta); \
+ GDK_nmallocs[_idx]++; \
+ } while (0)
+#define heapdec(memdelta) \
+ do { \
+ size_t _memdelta = (size_t) (memdelta); \
+ int _idx; \
+ \
+ malloc_lock(); \
+ if (_memdelta > GDK_mallocedbytes_estimate) { \
+ /* clearly, the stats are off: it should never \
+ * become less-than-zero */ \
+ GDKmem_heapcheck(GDKms()); \
+ } else { \
+ GDK_mallocedbytes_estimate -= _memdelta; \
+ } \
+ malloc_unlock(); \
+ GDKmallidx(_idx, _memdelta); \
+ GDK_nmallocs[_idx]--; \
+ } while (0)
+#else
+#define heapinc(_memdelta) \
+ do { \
+ malloc_lock(); \
+ GDK_mallocedbytes_estimate += (_memdelta); \
+ malloc_unlock(); \
+ } while (0)
+#define heapdec(memdelta) \
+ do { \
+ size_t _memdelta = (size_t) (memdelta); \
+ malloc_lock(); \
+ if (_memdelta > GDK_mallocedbytes_estimate) { \
+ /* clearly, the stats are off: it should never \
+ * become less-than-zero */ \
+ GDKmem_heapcheck(GDKms()); \
+ } else { \
+ GDK_mallocedbytes_estimate -= _memdelta; \
+ } \
+ malloc_unlock(); \
+ } while (0)
#endif
- malloc_lock();
- if (_memdelta > GDK_mallocedbytes_estimate) {
- /* clearly, the stats are off: it should never become
less-than-zero */
- GDKmem_heapcheck(GDKms());
- } else {
- GDK_mallocedbytes_estimate -= _memdelta;
- }
- malloc_unlock();
-#ifdef GDK_MEM_KEEPHISTO
- {
- int _idx;
+#ifdef GDK_VM_KEEPHISTO
+#define meminc(memdelta, vmdelta, fcn) \
+ do { \
+ ssize_t _memdelta = (ssize_t) (memdelta); \
+ ssize_t _vmdelta = (ssize_t) SEG_SIZE((vmdelta),MT_VMUNITLOG); \
+ int _idx; \
+ \
+ gdk_set_lock(GDKthreadLock, fcn); \
+ GDK_mem_cursize += _memdelta; \
+ GDKmallidx(_idx, _vmdelta); \
+ GDK_vm_nallocs[_idx]++; \
+ GDK_vm_cursize += _vmdelta; \
+ gdk_unset_lock(GDKthreadLock, fcn); \
+ } while (0)
+#define memdec(memdelta, vmdelta, fcn) \
+ do { \
+ ssize_t _memdelta = (ssize_t) (memdelta); \
+ ssize_t _vmdelta = (ssize_t) SEG_SIZE((vmdelta),MT_VMUNITLOG); \
+ int _idx; \
+ \
+ gdk_set_lock(GDKthreadLock, fcn); \
+ GDK_mem_cursize -= _memdelta; \
+ GDKmallidx(_idx, _vmdelta); \
+ GDK_vm_nallocs[_idx]--; \
+ GDK_vm_cursize -= _vmdelta; \
+ gdk_unset_lock(GDKthreadLock, fcn); \
+ } while (0)
+#else
+#define meminc(memdelta, vmdelta, fcn) \
+ do { \
+ ssize_t _memdelta = (ssize_t) (memdelta); \
+ ssize_t _vmdelta = (ssize_t) SEG_SIZE((vmdelta),MT_VMUNITLOG); \
+ \
+ gdk_set_lock(GDKthreadLock, fcn); \
+ GDK_mem_cursize += _memdelta; \
+ GDK_vm_cursize += _vmdelta; \
+ gdk_unset_lock(GDKthreadLock, fcn); \
+ } while (0)
+#define memdec(memdelta, vmdelta, fcn) \
+ do { \
+ ssize_t _memdelta = (ssize_t) (memdelta); \
+ ssize_t _vmdelta = (ssize_t) SEG_SIZE((vmdelta),MT_VMUNITLOG); \
+ \
+ gdk_set_lock(GDKthreadLock, fcn); \
+ GDK_mem_cursize -= _memdelta; \
+ GDK_vm_cursize -= _vmdelta; \
+ gdk_unset_lock(GDKthreadLock, fcn); \
+ } while (0)
+#endif
- GDKmallidx(_idx, _memdelta);
- GDK_nmallocs[_idx]--;
- }
-#endif
- }
-
-@
- * @- meminc(size_t memdelta, size_t vmdelta, str fcn)
-@= meminc
- {
- ssize_t _memdelta = (ssize_t) @1;
- ssize_t _vmdelta = (ssize_t) SEG_SIZE(@2,MT_VMUNITLOG);
-
- gdk_set_lock(GDKthreadLock, @3);
- GDK_mem_cursize += _memdelta;
-#ifdef GDK_VM_KEEPHISTO
- {
- int _idx;
-
- GDKmallidx(_idx, _vmdelta);
- GDK_vm_nallocs[_idx]++;
- }
-#endif
- GDK_vm_cursize += _vmdelta;
- gdk_unset_lock(GDKthreadLock, @3);
- }
-
-@
- * @- memdec(size_t memdelta, size_t vmdelta, str nme)
-@= memdec
- {
- ssize_t _memdelta = (ssize_t) @1;
- ssize_t _vmdelta = (ssize_t) SEG_SIZE(@2,MT_VMUNITLOG);
-
- gdk_set_lock(GDKthreadLock, @3);
- GDK_mem_cursize -= _memdelta;
-#ifdef GDK_VM_KEEPHISTO
- {
- int _idx;
-
- GDKmallidx(_idx, _vmdelta);
- GDK_vm_nallocs[_idx]--;
- }
-#endif
- GDK_vm_cursize -= _vmdelta;
- gdk_unset_lock(GDKthreadLock, @3);
- }
-@
-@c
static void
GDKmemdump(void)
{
@@ -810,232 +808,6 @@ GDKmemchk(int memchk, int vmchk)
}
}
-
-/*
- * @+ Stack tracing
- *
- * Very simple malloc tracing implementation that allows to retain on which
stack frame
- * a malloc was done. This is code originally developed by DD, and
- * is used only by them.
- * Two bats are used: stackBat and memBat.
- * StackBat contains a DAG of all methods used for memory allocation.
- * MemBat contains a mapping from allocated memory addresses to an index
- * in the stackBat which indicates the place the memory is allocated.
- */
-#ifdef GDK_MEM_TRACE
-
-static BAT *stackBat = NULL;
-static BAT *memBat = NULL;
-typedef ptr mem_t;
-
-char *
-stack_test(int i, int j)
-{
- if (--i == 0)
- return (char *) GDKmalloc(j);
-
- return stack_test(i, j);
-}
-
-
-void
-mtrace_test()
-{
- char *t = stack_test(1, 1);
-
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list