diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | gc.c | 10 |
2 files changed, 15 insertions, 2 deletions
@@ -1,3 +1,10 @@ +Sun Mar 24 12:55:47 2013 Narihiro Nakamura <authornari@gmail.com> + + * gc.c: We have no chance to expand the heap when lazy sweeping is + restricted. So collecting is often invoked if there is not + enough free space in the heap. Try to expand heap when this is + the case. + Sun Mar 24 11:03:31 2013 Tanaka Akira <akr@fsij.org> * test/ruby/test_require.rb: Remove temporally files in the tests. @@ -2043,8 +2043,14 @@ gc_prepare_free_objects(rb_objspace_t *objspace) { int res; - if (objspace->flags.dont_lazy_sweep) - return garbage_collect(objspace); + if (objspace->flags.dont_lazy_sweep) { + if (heaps_increment(objspace)) { + return; + } + else { + return garbage_collect(objspace); + } + } if (!ready_to_gc(objspace)) return TRUE; |