summaryrefslogtreecommitdiffstats
path: root/gc.c
diff options
context:
space:
mode:
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/gc.c b/gc.c
index 850605c5..d3dd1f3c 100644
--- a/gc.c
+++ b/gc.c
@@ -165,7 +165,8 @@ val make_obj(void)
malloc_delta >= opt_gc_delta)
{
gc();
- assert (freshobj_idx < FRESHOBJ_VEC_SIZE);
+ if (freshobj_idx >= FRESHOBJ_VEC_SIZE)
+ full_gc = 1;
prev_malloc_bytes = malloc_bytes;
}
#else
@@ -189,7 +190,8 @@ val make_obj(void)
#endif
#if CONFIG_GEN_GC
ret->t.gen = 0;
- freshobj[freshobj_idx++] = ret;
+ if (!full_gc)
+ freshobj[freshobj_idx++] = ret;
#endif
gc_bytes += sizeof (obj_t);
return ret;
@@ -208,7 +210,7 @@ val make_obj(void)
}
}
- return 0;
+ abort();
}
static void finalize(val obj)