* insns.def (intern): new instruction to turn string into symbol.
  opt_call_c_function can not dump.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59951 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2017-09-18 05:16:37 +00:00
Родитель b2da3824c5
Коммит 5d988300b2
3 изменённых файлов: 15 добавлений и 11 удалений

Просмотреть файл

@ -29,9 +29,6 @@
#undef RUBY_UNTYPED_DATA_WARNING
#define RUBY_UNTYPED_DATA_WARNING 0
rb_control_frame_t *
FUNC_FASTCALL(rb_vm_str_intern)(rb_thread_t *, rb_control_frame_t *);
#define ISEQ_TYPE_ONCE_GUARD ISEQ_TYPE_DEFINED_GUARD
#define FIXNUM_INC(n, i) ((n)+(INT2FIX(i)&~FIXNUM_FLAG))
@ -6582,7 +6579,7 @@ iseq_compile_each0(rb_iseq_t *iseq, LINK_ANCHOR *const ret, NODE *node, int popp
case NODE_DSYM:{
compile_dstr(iseq, ret, node);
if (!popped) {
ADD_INSN1(ret, line, opt_call_c_function, rb_vm_str_intern);
ADD_INSN(ret, line, intern);
}
else {
ADD_INSN(ret, line, pop);

Просмотреть файл

@ -398,6 +398,20 @@ toregexp
rb_ary_clear(ary);
}
/**
@c put
@e intern str to Symbol and push it.
@j str
*/
DEFINE_INSN
intern
()
(VALUE str)
(VALUE sym)
{
sym = rb_str_intern(str);
}
/**
@c put
@e put new array initialized with num values on the stack.

Просмотреть файл

@ -2794,13 +2794,6 @@ FUNC_FASTCALL(rb_vm_opt_struct_aset)(rb_thread_t *th, rb_control_frame_t *reg_cf
return reg_cfp;
}
rb_control_frame_t *
FUNC_FASTCALL(rb_vm_str_intern)(rb_thread_t *th, rb_control_frame_t *reg_cfp)
{
TOPN(0) = rb_str_intern(TOPN(0));
return reg_cfp;
}
/* defined insn */
static enum defined_type