summaryrefslogtreecommitdiff
path: root/vm_insnhelper.c
diff options
context:
space:
mode:
authork0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2019-03-25 14:26:11 +0000
committerk0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2019-03-25 14:26:11 +0000
commitc92c0a593593da2eb1ff94d83d80f71e7ae5343c (patch)
treeba54ac54767c4263bc00abf0a56e0b6b3401284d /vm_insnhelper.c
parent7976d0d153c021fb2e350743fbb54d239aa7acf1 (diff)
Prefer using vm_base_ptr rather than cfp->bp
in MJIT implementation. This allows us to drop cfp->bp by just modifying vm_base_ptr in the future. No performance impact: $ benchmark-driver benchmark.yml --rbenv='before::before --disable-gems --jit;bp_::after --disable-gems --jit;vm_env_ptr::ruby-svn --disable-gems --jit' -v --output=all --repeat-count=12 before: ruby 2.7.0dev (2019-03-24 trunk 67341) +JIT [x86_64-linux] bp_: ruby 2.7.0dev (2019-03-24 trunk 67342) +JIT [x86_64-linux] vm_env_ptr: ruby 2.7.0dev (2019-03-25 trunk 67343) +JIT [x86_64-linux] last_commit=Prefer using vm_base_ptr rather than cfp->bp Calculating ------------------------------------- before bp_ vm_env_ptr Optcarrot Lan_Master.nes 77.15059205092646 70.18873044267853 69.62171387083328 fps 78.75767783870441 77.49867689173411 75.43496867709587 79.60102690369321 77.78037687683523 79.36688927929428 80.25144236638835 78.74729849101701 80.42363742291455 82.22375417165489 80.44265482494045 80.90287243299306 82.29166786292619 80.51740049420938 81.81153053252902 83.35386925305345 80.91054205210609 81.93562989125176 83.39770634366975 81.34550754145043 82.24544621470430 83.88523450309972 81.60698516017347 82.76801860263230 84.17553130135879 82.69615943446324 83.02530407910871 84.42132328119858 83.00969158037691 83.19968539409922 84.60731429793329 83.32703363300098 83.81352746019631 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67344 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm_insnhelper.c')
-rw-r--r--vm_insnhelper.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/vm_insnhelper.c b/vm_insnhelper.c
index af1ede2e6b..cc35997eae 100644
--- a/vm_insnhelper.c
+++ b/vm_insnhelper.c
@@ -300,7 +300,7 @@ vm_push_frame(rb_execution_context_t *ec,
/* Store initial value of ep as bp to skip calculation cost of bp on JIT cancellation. */
cfp->ep = sp;
- cfp->bp_ = cfp->sp = sp + 1;
+ cfp->__bp__ = cfp->sp = sp + 1;
#if VM_DEBUG_BP_CHECK
cfp->bp_check = sp + 1;
@@ -1637,10 +1637,10 @@ double_cmp_ge(double a, double b)
return a >= b ? Qtrue : Qfalse;
}
-static VALUE *
+static inline VALUE *
vm_base_ptr(const rb_control_frame_t *cfp)
{
-#if 0
+#if 0 // we may optimize and use this once we confirm it does not spoil performance on JIT.
const rb_control_frame_t *prev_cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp);
if (cfp->iseq && VM_FRAME_RUBYFRAME_P(cfp)) {
@@ -1663,7 +1663,7 @@ vm_base_ptr(const rb_control_frame_t *cfp)
return NULL;
}
#else
- return cfp->bp_;
+ return cfp->__bp__;
#endif
}