From 529af9c82123393c73f74040d974558b68212297 Mon Sep 17 00:00:00 2001 From: shyouhei Date: Wed, 27 Jun 2018 01:10:02 +0000 Subject: [PATCH] refactor move logics out of insns.def This is a pure refactoring. I see no difference in this change. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63756 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- insns.def | 14 ++------------ vm_insnhelper.c | 11 +++++++++++ 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/insns.def b/insns.def index 91ae4563f0..d9a49356a6 100644 --- a/insns.def +++ b/insns.def @@ -730,12 +730,7 @@ opt_str_freeze () (VALUE val) { - if (BASIC_OP_UNREDEFINED_P(BOP_FREEZE, STRING_REDEFINED_OP_FLAG)) { - val = str; - } - else { - val = rb_funcall(rb_str_resurrect(str), idFreeze, 0); - } + val = vm_opt_str_freeze(str, BOP_FREEZE, idFreeze); } DEFINE_INSN @@ -744,12 +739,7 @@ opt_str_uminus () (VALUE val) { - if (BASIC_OP_UNREDEFINED_P(BOP_UMINUS, STRING_REDEFINED_OP_FLAG)) { - val = str; - } - else { - val = rb_funcall(rb_str_resurrect(str), idUMinus, 0); - } + val = vm_opt_str_freeze(str, BOP_UMINUS, idUMinus); } DEFINE_INSN diff --git a/vm_insnhelper.c b/vm_insnhelper.c index 1f22cc64be..3fac8eb1fa 100644 --- a/vm_insnhelper.c +++ b/vm_insnhelper.c @@ -3213,6 +3213,17 @@ vm_find_or_create_class_by_id(ID id, } } +static VALUE +vm_opt_str_freeze(VALUE str, int bop, ID id) +{ + if (BASIC_OP_UNREDEFINED_P(bop, STRING_REDEFINED_OP_FLAG)) { + return str; + } + else { + return rb_funcall(rb_str_resurrect(str), id, 0); + } +} + /* this macro is mandatory to use OPTIMIZED_CMP. What a design! */ #define id_cmp idCmp