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

ruby-changes:48449

From: ko1 <ko1@a...>
Date: Mon, 30 Oct 2017 00:39:00 +0900 (JST)
Subject: [ruby-changes:48449] ko1:r60563 (trunk): call `rb_vm_stack_to_heap()`

ko1	2017-10-30 00:38:55 +0900 (Mon, 30 Oct 2017)

  New Revision: 60563

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

  Log:
    call `rb_vm_stack_to_heap()`
    
    * safe.c (rb_set_safe_level): call `rb_vm_stack_to_heap()`
      to set block parameter.
    
    * safe.c (rb_set_safe_level): use `GET_EC()`.
    
    * safe.c (safe_setter): ditto.

  Modified files:
    trunk/safe.c
Index: safe.c
===================================================================
--- safe.c	(revision 60562)
+++ safe.c	(revision 60563)
@@ -46,13 +46,16 @@ rb_set_safe_level_force(int safe) https://github.com/ruby/ruby/blob/trunk/safe.c#L46
 void
 rb_set_safe_level(int level)
 {
-    rb_thread_t *th = GET_THREAD();
+    rb_execution_context_t *ec = GET_EC();
 
-    if (level > th->ec->safe_level) {
+    if (level > ec->safe_level) {
 	if (level > SAFE_LEVEL_MAX) {
 	    rb_raise(rb_eArgError, "$SAFE=2 to 4 are obsolete");
 	}
-	th->ec->safe_level = level;
+	/* block parameters */
+	rb_vm_stack_to_heap(ec);
+
+	ec->safe_level = level;
     }
 }
 
@@ -65,8 +68,8 @@ safe_getter(void) https://github.com/ruby/ruby/blob/trunk/safe.c#L68
 static void
 safe_setter(VALUE val)
 {
-    rb_thread_t *th = GET_THREAD();
-    int current_level = th->ec->safe_level;
+    rb_execution_context_t *ec = GET_EC();
+    int current_level = ec->safe_level;
     int level = NUM2INT(val);
 
     if (level == current_level) {
@@ -82,9 +85,9 @@ safe_setter(VALUE val) https://github.com/ruby/ruby/blob/trunk/safe.c#L85
     }
 
     /* block parameters */
-    rb_vm_stack_to_heap(th->ec);
+    rb_vm_stack_to_heap(ec);
 
-    th->ec->safe_level = level;
+    ec->safe_level = level;
 }
 
 void

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

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