diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2015-04-24 07:53:25 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2015-04-24 07:53:25 -0700 |
commit | 097b3d2421b040e9e8512275c7c64f19c16615be (patch) | |
tree | c1e88fb9e42cb3fbde98968e586024795a712edd | |
parent | b360098319ea038521bf6ead9fa3f1a1f9e2288c (diff) | |
download | txr-097b3d2421b040e9e8512275c7c64f19c16615be.tar.gz txr-097b3d2421b040e9e8512275c7c64f19c16615be.tar.bz2 txr-097b3d2421b040e9e8512275c7c64f19c16615be.zip |
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.
-rw-r--r-- | ChangeLog | 12 | ||||
-rw-r--r-- | gc.c | 2 |
2 files changed, 13 insertions, 1 deletions
@@ -1,5 +1,17 @@ 2015-04-24 Kaz Kylheku <kaz@kylheku.com> + 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 <kaz@kylheku.com> + * gc.c (make_obj, gc): The check for insufficient space in freshobj array after a gc is moved into the gc function. @@ -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; } |