ruby-changes:29497
From: ko1 <ko1@a...>
Date: Sat, 22 Jun 2013 05:10:14 +0900 (JST)
Subject: [ruby-changes:29497] ko1:r41549 (trunk): * gc.c (rgengc_rememberset_mark): call gc_mark_children() for
ko1 2013-06-22 05:10:03 +0900 (Sat, 22 Jun 2013) New Revision: 41549 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=41549 Log: * gc.c (rgengc_rememberset_mark): call gc_mark_children() for remembered objects directly instead of pushing on the mark stack. Modified files: trunk/ChangeLog trunk/gc.c Index: ChangeLog =================================================================== --- ChangeLog (revision 41548) +++ ChangeLog (revision 41549) @@ -1,3 +1,8 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 +Sat Jun 22 05:08:03 2013 Koichi Sasada <ko1@a...> + + * gc.c (rgengc_rememberset_mark): call gc_mark_children() for + remembered objects directly instead of pushing on the mark stack. + Sat Jun 22 04:48:53 2013 Koichi Sasada <ko1@a...> * include/ruby/ruby.h (OBJ_WRITE): cast to (VALUE *) for second Index: gc.c =================================================================== --- gc.c (revision 41548) +++ gc.c (revision 41549) @@ -3720,10 +3720,11 @@ rgengc_rememberset_mark(rb_objspace_t *o https://github.com/ruby/ruby/blob/trunk/gc.c#L3720 bitset = bits[j]; do { if (bitset & 1) { - gc_mark_ptr(objspace, (VALUE)p); - push_mark_stack(&objspace->mark_stack, (VALUE) p); rgengc_report(2, objspace, "rgengc_rememberset_mark: mark %p (%s)\n", p, obj_type_name((VALUE)p)); + gc_mark_ptr(objspace, (VALUE)p); + gc_mark_children(objspace, (VALUE) p); + if (!RVALUE_SHADY(p)) { rgengc_report(2, objspace, "rgengc_rememberset_mark: clear %p (%s)\n", p, obj_type_name((VALUE)p)); CLEAR_IN_BITMAP(bits, p); -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/