summaryrefslogtreecommitdiffstats
path: root/gc.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2012-04-04 13:28:11 -0700
committerKaz Kylheku <kaz@kylheku.com>2012-04-04 13:28:11 -0700
commit22549f7e02841d5e6fcc6654dbaddcedc485f7e3 (patch)
treed5c9bbb90f439993820c5668940d8fc3fb24f0eb /gc.c
parent546385def966f1baa475ab1552394f60a3f61a86 (diff)
downloadtxr-22549f7e02841d5e6fcc6654dbaddcedc485f7e3.tar.gz
txr-22549f7e02841d5e6fcc6654dbaddcedc485f7e3.tar.bz2
txr-22549f7e02841d5e6fcc6654dbaddcedc485f7e3.zip
* configure (gen_gc): Default to off.
Help section added for gen_gc variable. * gc.c (gc): Some missing CONFIG_GEN_GC added.
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gc.c b/gc.c
index 458aff42..5bbb88da 100644
--- a/gc.c
+++ b/gc.c
@@ -534,7 +534,9 @@ static int_ptr_t sweep(void)
void gc(void)
{
val gc_stack_top = nil;
+#if CONFIG_GEN_GC
int exhausted = (free_list == 0);
+#endif
if (gc_enabled) {
int swept;
@@ -552,10 +554,16 @@ void gc(void)
mark(&mc, &gc_stack_top);
hash_process_weak();
swept = sweep();
+#if CONFIG_GEN_GC
if (full_gc && swept < 3 * HEAP_SIZE / 4)
more();
else if (!full_gc && swept < HEAP_SIZE / 4 && exhausted)
more();
+#else
+ if (swept < 3 * HEAP_SIZE / 4)
+ more();
+#endif
+
#if CONFIG_GEN_GC
backptr_idx = 0;
freshobj_idx = 0;