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

ruby-changes:35453

From: ko1 <ko1@a...>
Date: Thu, 11 Sep 2014 20:23:25 +0900 (JST)
Subject: [ruby-changes:35453] ko1:r47535 (trunk): * vm.c (rb_thread_mark): use rb_gc_mark_values() to mark VM stack.

ko1	2014-09-11 20:23:16 +0900 (Thu, 11 Sep 2014)

  New Revision: 47535

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=47535

  Log:
    * vm.c (rb_thread_mark): use rb_gc_mark_values() to mark VM stack.

  Modified files:
    trunk/ChangeLog
    trunk/vm.c
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 47534)
+++ ChangeLog	(revision 47535)
@@ -1,3 +1,7 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1
+Thu Sep 11 20:10:00 2014  Koichi Sasada  <ko1@a...>
+
+	* vm.c (rb_thread_mark): use rb_gc_mark_values() to mark VM stack.
+
 Thu Sep 11 19:50:57 2014  Koichi Sasada  <ko1@a...>
 
 	* vm.c (rb_vm_register_special_exception): make new function to
Index: vm.c
===================================================================
--- vm.c	(revision 47534)
+++ vm.c	(revision 47535)
@@ -1981,10 +1981,8 @@ rb_thread_mark(void *ptr) https://github.com/ruby/ruby/blob/trunk/vm.c#L1981
 	    rb_control_frame_t *cfp = th->cfp;
 	    rb_control_frame_t *limit_cfp = (void *)(th->stack + th->stack_size);
 
-	    while (p < sp) {
-		rb_gc_mark(*p++);
-	    }
-	    rb_gc_mark_locations(p, p + th->mark_stack_len);
+	    rb_gc_mark_values((long)(sp - p), p);
+	    rb_gc_mark_locations(sp, sp + th->mark_stack_len);
 
 	    while (cfp != limit_cfp) {
 		rb_iseq_t *iseq = cfp->iseq;

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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