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

ruby-changes:58672

From: Koichi <ko1@a...>
Date: Sat, 9 Nov 2019 16:19:30 +0900 (JST)
Subject: [ruby-changes:58672] 43ceedecc0 (master): use STACK_ADDR_FROM_TOP()

https://git.ruby-lang.org/ruby.git/commit/?id=43ceedecc0

From 43ceedecc0b9990b5bac2e65de5e439c41a9996b Mon Sep 17 00:00:00 2001
From: Koichi Sasada <ko1@a...>
Date: Sat, 9 Nov 2019 16:15:17 +0900
Subject: use STACK_ADDR_FROM_TOP()

vm_invoke_builtin() accesses VM stack via cfp->sp. However, MJIT
can use their own stack. To access them appropriately, we need to
use STACK_ADDR_FROM_TOP().

diff --git a/insns.def b/insns.def
index 993bc04..1333c09 100644
--- a/insns.def
+++ b/insns.def
@@ -1497,7 +1497,7 @@ invokebuiltin https://github.com/ruby/ruby/blob/trunk/insns.def#L1497
 // attr bool leaf = false; /* anything can happen inside */
 // attr rb_snum_t sp_inc = 1 - bf->argc;
 {
-    ret = vm_invoke_builtin(ec, reg_cfp, bf);
+    ret = vm_invoke_builtin(ec, reg_cfp, bf, STACK_ADDR_FROM_TOP(bf->argc));
 }
 
 /* call specific function with args (same parameters) */
diff --git a/vm_insnhelper.c b/vm_insnhelper.c
index 8378fc3..898b193 100644
--- a/vm_insnhelper.c
+++ b/vm_insnhelper.c
@@ -4981,9 +4981,8 @@ invoke_bf(rb_execution_context_t *ec, rb_control_frame_t *cfp, const struct rb_b https://github.com/ruby/ruby/blob/trunk/vm_insnhelper.c#L4981
 }
 
 static VALUE
-vm_invoke_builtin(rb_execution_context_t *ec, rb_control_frame_t *cfp, const struct rb_builtin_function* bf)
+vm_invoke_builtin(rb_execution_context_t *ec, rb_control_frame_t *cfp, const struct rb_builtin_function* bf, const VALUE *argv)
 {
-    const VALUE *argv = cfp->sp - bf->argc;
     return invoke_bf(ec, cfp, bf, argv);
 }
 
-- 
cgit v0.10.2


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

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