|
@@ -1,4 +1,3 @@
|
|
|
-
|
|
|
#include "bbgc.h"
|
|
|
|
|
|
namespace bbDB{
|
|
@@ -241,15 +240,13 @@ namespace bbGC{
|
|
|
printf( "Warning! bbGC::release() - node not found!\n" );
|
|
|
}
|
|
|
|
|
|
- //need to return 8 byte aligned memory!
|
|
|
- //
|
|
|
void *malloc( size_t size ){
|
|
|
|
|
|
-// size=(size+sizeof(size_t)+7)&~7;
|
|
|
- size=( size+8+7 ) & ~7;
|
|
|
+ size=(size+8+7) & ~7;
|
|
|
|
|
|
memused+=size;
|
|
|
|
|
|
+
|
|
|
if( !suspended ){
|
|
|
|
|
|
if( allocedBytes+size>=trigger ){
|
|
@@ -294,13 +291,10 @@ namespace bbGC{
|
|
|
}
|
|
|
|
|
|
allocedBytes+=size;
|
|
|
-
|
|
|
size_t *q=(size_t*)p;
|
|
|
-
|
|
|
if( sizeof(size_t)==4 ) ++q;
|
|
|
-
|
|
|
*q++=size;
|
|
|
-
|
|
|
+
|
|
|
return q;
|
|
|
}
|
|
|
|
|
@@ -315,15 +309,13 @@ namespace bbGC{
|
|
|
|
|
|
if( !p ) return;
|
|
|
|
|
|
- size_t *q=(size_t*)p-1;
|
|
|
-
|
|
|
- size_t size=*q;
|
|
|
-
|
|
|
+ size_t *q=(size_t*)p;
|
|
|
+ size_t size=*--q;
|
|
|
if( sizeof(size_t)==4 ) --q;
|
|
|
|
|
|
-#ifndef NDEBUG
|
|
|
+ #ifndef NDEBUG
|
|
|
memset( q,0xa5,size );
|
|
|
-#endif
|
|
|
+ #endif
|
|
|
|
|
|
memused-=size;
|
|
|
|
|
@@ -335,7 +327,19 @@ namespace bbGC{
|
|
|
::free( q );
|
|
|
}
|
|
|
}
|
|
|
+/*
|
|
|
+ bbGCNode *alloc( size_t size ){
|
|
|
|
|
|
+ bbGCNode *p=(bbGCNode*)bbGC::malloc( size );
|
|
|
+
|
|
|
+ *((void**)p)=(void*)0xcafebabe;
|
|
|
+
|
|
|
+ p->state=0;
|
|
|
+ p->flags=0;
|
|
|
+
|
|
|
+ return p;
|
|
|
+ }
|
|
|
+*/
|
|
|
void collect(){
|
|
|
|
|
|
if( !inited ) return;
|