[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]