ソースを参照

Use malloc/free in Debug mode, otherwise use the GC heap.

woollybah 10 年 前
コミット
ee800ac782
2 ファイル変更13 行追加8 行削除
  1. 4 0
      blitz.mod/blitz.bmx
  2. 9 8
      blitz.mod/blitz_memory.c

+ 4 - 0
blitz.mod/blitz.bmx

@@ -67,6 +67,10 @@ ModuleInfo "CC_OPTS: -DATOMIC_UNCOLLECTABLE"
 ModuleInfo "CC_OPTS: -DGC_THREADS -DATOMIC_UNCOLLECTABLE"
 ?
 
+?debug
+ModuleInfo "CC_OPTS: -DBMX_DEBUG"
+?
+
 Import "blitz_app.c"
 Import "blitz_types.c"
 Import "blitz_cclib.c"

+ 9 - 8
blitz.mod/blitz_memory.c

@@ -4,23 +4,24 @@
 #define SIZEALIGN 16
 #define ALIGNMASK (SIZEALIGN-1)
 
-//Allocates mem on 16 byte aligned boundary.
-//
-//Used by (some) GC routines to allocate large chunks, and GC mem needs to be on 16 byte boundary for
-//mem bit flags system in ref couter/Mark Sibly GCs...
-//
+/* use malloc/free() in Debug mode, otherwise use the GC heap */
 void *bbMemAlloc( size_t size ){
 	void *p;
-	
+#ifdef BMX_DEBUG
 	p=malloc( size );
-	//p=GC_MALLOC_ATOMIC_UNCOLLECTABLE( size );
+#else
+	p=GC_MALLOC_ATOMIC_UNCOLLECTABLE( size );
+#endif
 	return p;
 	
 }
 
 void bbMemFree( void *p ){
-	//if( p ) GC_free( p );
+#ifdef BMX_DEBUG
 	if ( p ) free(p);
+#else
+	if( p ) GC_free( p );
+#endif
 }
 
 void *bbMemExtend( void *mem,size_t size,size_t new_size ){