path: root/vm_insnhelper.c
diff options
authorshyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-09-12 03:39:36 (GMT)
committershyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-09-12 03:39:36 (GMT)
commit02b52b2733baf5a65b0e40a376cdb1bba61c8d6c (patch)
treee5700381924f2b523d727526f1f7fb7849e4e141 /vm_insnhelper.c
parent33c8171c65ac0f66d1c096561e253f6f068fc85c (diff)
make opt_str_freeze leaf
Simply use DISPATCH_ORIGINAL_INSN instead of rb_funcall. This is, when possible, overall performant because method dispatch results are cached inside of CALL_CACHE. Should also be good for JIT. ---- trunk: ruby 2.6.0dev (2018-09-12 trunk 64689) [x86_64-darwin15] ours: ruby 2.6.0dev (2018-09-12 leaf-insn 64688) [x86_64-darwin15] last_commit=make opt_str_freeze leaf Calculating ------------------------------------- trunk ours vm2_freezestring 5.440M 31.411M i/s - 6.000M times in 1.102968s 0.191017s Comparison: vm2_freezestring ours: 31410864.5 i/s trunk: 5439865.4 i/s - 5.77x slower git-svn-id: svn+ssh:// b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm_insnhelper.c')
1 files changed, 1 insertions, 1 deletions
diff --git a/vm_insnhelper.c b/vm_insnhelper.c
index 50d9561..bf886f7 100644
--- a/vm_insnhelper.c
+++ b/vm_insnhelper.c
@@ -3219,7 +3219,7 @@ vm_opt_str_freeze(VALUE str, int bop, ID id)
return str;
else {
- return rb_funcall(rb_str_resurrect(str), id, 0);
+ return Qundef;