aboutsummaryrefslogtreecommitdiffstats
path: root/tool
diff options
context:
space:
mode:
authork0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-08-11 05:33:15 +0000
committerk0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-08-11 05:33:15 +0000
commit25459f400d2532ab4dedfb93c884652de55b56d8 (patch)
tree7eb55b05f6b764dabc9bd78162fa0578c04d5d36 /tool
parentb0ecf0838d507003de7dd57b496b6f447150ec3a (diff)
downloadruby-25459f400d2532ab4dedfb93c884652de55b56d8.tar.gz
_mjit_compile_pc_and_sp.erb: always move pc
to fix the wrong line number on #caller_locations or rb_profile_frames. Actually we would be able to move it only when method call (of caller_locations) or C extension invocation (calling rb_profile_frames) can happen. This degrades performance. Optcarrot fps becomes... before: 71.78976052783555 after: 67.65429356624131 I think I can lazily move it and fix the performance issue, even improving the performance for the situation catch table exists. But let me fix this bug first... git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64283 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'tool')
-rw-r--r--tool/ruby_vm/views/_mjit_compile_pc_and_sp.erb4
1 files changed, 1 insertions, 3 deletions
diff --git a/tool/ruby_vm/views/_mjit_compile_pc_and_sp.erb b/tool/ruby_vm/views/_mjit_compile_pc_and_sp.erb
index f97d4263c6..5ff1c96f8e 100644
--- a/tool/ruby_vm/views/_mjit_compile_pc_and_sp.erb
+++ b/tool/ruby_vm/views/_mjit_compile_pc_and_sp.erb
@@ -7,9 +7,7 @@
%
% # JIT: Move pc so that catch table lookup condition is met. If the ISeq might not catch an exception,
% # the pc motion is optimized away and thus pc should be set properly before `goto cancel`.
- if (body->catch_except_p) {
- fprintf(f, " reg_cfp->pc = original_body_iseq + %d;\n", next_pos); /* ADD_PC(INSN_ATTR(width)); */
- }
+ fprintf(f, " reg_cfp->pc = original_body_iseq + %d;\n", next_pos); /* ADD_PC(INSN_ATTR(width)); */
%
% # JIT: move sp to use or preserve stack variables
if (status->local_stack_p) {