|
@@ -107,14 +107,15 @@ BBObject * bbGCAllocObject( int sz,BBClass *clas,int flags ){
|
|
++bbGCAllocCount;
|
|
++bbGCAllocCount;
|
|
#endif
|
|
#endif
|
|
q->clas=clas;
|
|
q->clas=clas;
|
|
|
|
+
|
|
if (bbCountInstances) {
|
|
if (bbCountInstances) {
|
|
bbAtomicAdd(&clas->instance_count, 1);
|
|
bbAtomicAdd(&clas->instance_count, 1);
|
|
- } else {
|
|
|
|
- if( flags & BBGC_FINALIZE ){
|
|
|
|
- GC_finalization_proc ofn;
|
|
|
|
- void *ocd;
|
|
|
|
- GC_REGISTER_FINALIZER_NO_ORDER( q,gc_finalizer,clas,&ofn,&ocd );
|
|
|
|
- }
|
|
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if( (flags & BBGC_FINALIZE) || bbCountInstances ){
|
|
|
|
+ GC_finalization_proc ofn;
|
|
|
|
+ void *ocd;
|
|
|
|
+ GC_REGISTER_FINALIZER_NO_ORDER( q,gc_finalizer,clas,&ofn,&ocd );
|
|
}
|
|
}
|
|
return q;
|
|
return q;
|
|
}
|
|
}
|