registers) does not run out of memory */
#define ALLOT_BUFFER_ZONE 1024
-static int count;
+ /* If this is defined, we GC every 100 allocations. This catches missing local roots */
+ #ifdef GC_DEBUG
++int gc_count;
+ #endif
+
/*
* It is up to the caller to fill in the object's fields in a meaningful
* fashion!
*/
+int count;
INLINE void *allot_object(CELL type, CELL a)
{
- if(!gc_off) { if(count++ % 100 == 0) { printf("!\n"); gc(); } }
-
+ #ifdef GC_DEBUG
-
+ if(!gc_off)
+ {
- if(count++ % 1000 == 0)
++ if(gc_count++ % 1000 == 0)
+ gc();
+
+ }
+ #endif
+
CELL *object;
- if(HAVE_NURSERY_P && nursery.size - ALLOT_BUFFER_ZONE > a)
+ if(nursery.size - ALLOT_BUFFER_ZONE > a)
{
/* If there is insufficient room, collect the nursery */
if(nursery.here + ALLOT_BUFFER_ZONE + a > nursery.end)