summaryrefslogtreecommitdiff
path: root/vm_insnhelper.c
diff options
context:
space:
mode:
authork0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2019-04-13 06:27:52 +0000
committerk0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2019-04-13 06:27:52 +0000
commit30f71f4768e0babc60f5be6ca235d2c40268bc27 (patch)
tree81bde72d9798ba7960b129c047b9d725765bc733 /vm_insnhelper.c
parente7f7aa87420d6542b8e4a347a037e4ce293fb845 (diff)
GET_CFP and ec->cfp are different
When reviewing r66565, I overlooked that `GET_ISEQ()` and `GET_EP()` are NOT `ec->cfp->iseq` and `ec->cfp->ep` but `reg_cfp->iseq` and `reg_cfp->ep`. `vm_push_frame` updates `ec->cfp` and in this case we want to check the callee's cfp and so `ec->cfp` should be checked instead. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67522 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm_insnhelper.c')
-rw-r--r--vm_insnhelper.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/vm_insnhelper.c b/vm_insnhelper.c
index 1b0dbde832..95612453e7 100644
--- a/vm_insnhelper.c
+++ b/vm_insnhelper.c
@@ -3636,12 +3636,12 @@ vm_sendish(
frame may have stack values in the local variables and the
cancelling the caller frame will purge them. But directly
calling mjit_exec is faster... */
- if (GET_ISEQ()->body->catch_except_p) {
- VM_ENV_FLAGS_SET(GET_EP(), VM_FRAME_FLAG_FINISH);
+ if (ec->cfp->iseq->body->catch_except_p) {
+ VM_ENV_FLAGS_SET(ec->cfp->ep, VM_FRAME_FLAG_FINISH);
return vm_exec(ec, true);
}
else if ((val = mjit_exec(ec)) == Qundef) {
- VM_ENV_FLAGS_SET(GET_EP(), VM_FRAME_FLAG_FINISH);
+ VM_ENV_FLAGS_SET(ec->cfp->ep, VM_FRAME_FLAG_FINISH);
return vm_exec(ec, false);
}
else {