diff options
author | tarui <tarui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-10-25 21:37:39 +0000 |
---|---|---|
committer | tarui <tarui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-10-25 21:37:39 +0000 |
commit | 59735e2c617df8e7d12b8bdf603915e105c9571a (patch) | |
tree | aaacb44d398394c1e9fbac2ecc3ae1b8f299ad4a /gc.c | |
parent | 7518f59cbee5da401cf24dd67c488bb1be137d1c (diff) | |
download | ruby-59735e2c617df8e7d12b8bdf603915e105c9571a.tar.gz |
* gc.c (gc_before_heap_sweep): Restructure code to mean clearly.
heap->freelist is connected to end of list.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43423 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'gc.c')
-rw-r--r-- | gc.c | 15 |
1 files changed, 4 insertions, 11 deletions
@@ -2483,18 +2483,11 @@ gc_before_heap_sweep(rb_objspace_t *objspace, rb_heap_t *heap) heap->free_pages = NULL; if (heap->using_page) { - if (heap->using_page->freelist) { - RVALUE *pstart = heap->using_page->freelist; - RVALUE *p = heap->using_page->freelist; - while (p->as.free.next) { - p = p->as.free.next; - } - p->as.free.next = heap->freelist; - heap->using_page->freelist = pstart; - } - else { - heap->using_page->freelist = heap->freelist; + RVALUE **p = &heap->using_page->freelist; + while (*p) { + p = &(*p)->as.free.next; } + *p = heap->freelist; heap->using_page = NULL; } heap->freelist = NULL; |