From 097b3d2421b040e9e8512275c7c64f19c16615be Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Fri, 24 Apr 2015 07:53:25 -0700 Subject: Regression: runaway allocation of heaps. * gc.c (make_obj): Fix regression introduced on 2014-10-18, released in TXR 100. Because make_obj discontinues placing objects into the freshobj_array when the full_gc flag has been set, it is incorrect to allocate another heap when the free list is exhausted and the freshobj_array has room remaining. It has room remaining because it is disused. --- ChangeLog | 12 ++++++++++++ gc.c | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index e5b44930..f98a6c5a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2015-04-24 Kaz Kylheku + + Regression: runaway allocation of heaps. + + * gc.c (make_obj): Fix regression introduced on 2014-10-18, + released in TXR 100. Because make_obj discontinues + placing objects into the freshobj_array when the full_gc + flag has been set, it is incorrect to allocate another heap + when the free list is exhausted and the freshobj_array + has room remaining. It has room remaining because it is + disused. + 2015-04-24 Kaz Kylheku * gc.c (make_obj, gc): The check for insufficient space in freshobj diff --git a/gc.c b/gc.c index 799bbf94..53357c0b 100644 --- a/gc.c +++ b/gc.c @@ -204,7 +204,7 @@ val make_obj(void) } #if CONFIG_GEN_GC - if (freshobj_idx < FRESHOBJ_VEC_SIZE) { + if (!full_gc && freshobj_idx < FRESHOBJ_VEC_SIZE) { more(); continue; } -- cgit v1.2.3