aboutsummaryrefslogtreecommitdiffstats
path: root/vm_insnhelper.h
diff options
context:
space:
mode:
authork0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-09-13 06:39:40 +0000
committerk0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-09-13 06:39:40 +0000
commitbada0d24eb29b03e3c41ba3dac8cd2a225b11a80 (patch)
treeecf80a8fb92b102d314a0a7eb002de3de1774eda /vm_insnhelper.h
parent14ad11a963811603b43e119d5a412575a9b2ad29 (diff)
downloadruby-bada0d24eb29b03e3c41ba3dac8cd2a225b11a80.tar.gz
vm_insnhelper.h: simplify EXEC_EC_CFP implementation
and possibly memory access for iseq->body may be reduced. No significant impact for performance on Optcarrot. * before fps: 55.03865935187656 fps: 57.16854675983188 fps: 57.672458407661765 fps: 58.28989837869383 fps: 58.80503815099268 fps: 59.068054176528534 fps: 59.55736806358244 fps: 61.01018920533034 fps: 63.34167049232186 fps: 65.20575018321766 fps: 65.46758316561318 * after fps: 55.21860411005677 fps: 55.34840351179166 fps: 58.23666596747484 fps: 59.71987124578901 fps: 61.131485120234935 fps: 61.279905164649485 fps: 61.66060774175459 fps: 64.11215576508765 fps: 64.63699742853154 fps: 65.28260058920769 fps: 65.85447796482678 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64711 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm_insnhelper.h')
-rw-r--r--vm_insnhelper.h8
1 files changed, 2 insertions, 6 deletions
diff --git a/vm_insnhelper.h b/vm_insnhelper.h
index b5f35df2bd..f63ada001d 100644
--- a/vm_insnhelper.h
+++ b/vm_insnhelper.h
@@ -144,11 +144,7 @@ enum vm_regan_acttype {
the caller 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... */
#define EXEC_EC_CFP(val) do { \
- if (ec->cfp->iseq->body->catch_except_p) { \
- VM_ENV_FLAGS_SET(ec->cfp->ep, VM_FRAME_FLAG_FINISH); \
- val = vm_exec(ec, TRUE); \
- } \
- else if ((val = mjit_exec(ec)) == Qundef) { \
+ if ((val = mjit_exec(ec, TRUE)) == Qundef) { \
VM_ENV_FLAGS_SET(ec->cfp->ep, VM_FRAME_FLAG_FINISH); \
val = vm_exec(ec, FALSE); \
} \
@@ -157,7 +153,7 @@ enum vm_regan_acttype {
/* When calling from VM, longjmp in the callee won't purge any JIT-ed caller frames.
So it's safe to directly call mjit_exec. */
#define EXEC_EC_CFP(val) do { \
- if ((val = mjit_exec(ec)) == Qundef) { \
+ if ((val = mjit_exec(ec, FALSE)) == Qundef) { \
RESTORE_REGS(); \
NEXT_INSN(); \
} \