summaryrefslogtreecommitdiff
path: root/gc.c
diff options
context:
space:
mode:
authornari <nari@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-08-04 11:40:59 +0000
committernari <nari@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-08-04 11:40:59 +0000
commitd7a33316825d3393f1f7e50ab76926b6891b5a89 (patch)
tree4bc522eb228c9ef34c8bc5ff349469122d267c74 /gc.c
parentcd060b4588b80786f921ab8d8e80efc143dce5fe (diff)
* gc.c (gc_mark_children): use gc_mark_ptr instead of marking
a object directly. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36618 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c6
1 files changed, 1 insertions, 5 deletions
diff --git a/gc.c b/gc.c
index c6e1edcbeb..99e0ce53ba 100644
--- a/gc.c
+++ b/gc.c
@@ -1839,7 +1839,6 @@ static void
gc_mark_children(rb_objspace_t *objspace, VALUE ptr, int lev)
{
register RVALUE *obj = RANY(ptr);
- register uintptr_t *bits;
goto marking; /* skip */
@@ -1847,10 +1846,7 @@ gc_mark_children(rb_objspace_t *objspace, VALUE ptr, int lev)
obj = RANY(ptr);
if (rb_special_const_p(ptr)) return; /* special const not marked */
if (obj->as.basic.flags == 0) return; /* free cell */
- bits = GET_HEAP_BITMAP(ptr);
- if (MARKED_IN_BITMAP(bits, ptr)) return; /* already marked */
- MARK_IN_BITMAP(bits, ptr);
- objspace->heap.live_num++;
+ if (!gc_mark_ptr(objspace, ptr)) return; /* already marked */
marking:
if (FL_TEST(obj, FL_EXIVAR)) {