diff options
author | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-09-26 08:11:05 +0000 |
---|---|---|
committer | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-09-26 08:11:05 +0000 |
commit | d3a9ebeb1c49e1cf8dd6accec6485dee32ccff17 (patch) | |
tree | b905c1b8dea5fcca6d8890e748ce031f4011d273 /insns.def | |
parent | ee819b0ddb0cbeb9c587e743204988b2e05e7c5d (diff) |
fix OPT_CALL_THREADED_CODE issue.
* insns.def (opt_send_without_block): reorder insn position because
`opt_str_freeze` insn refer this insn (function) when
OPT_CALL_THREADED_CODE is true.
* vm_opts.h (OPT_THREADED_CODE): introduce new macro to select
threaded code implementation with a compile option (-D...).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64854 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'insns.def')
-rw-r--r-- | insns.def | 32 |
1 files changed, 16 insertions, 16 deletions
@@ -751,6 +751,22 @@ send CALL_METHOD(&calling, ci, cc); } +/* Invoke method without block */ +DEFINE_INSN +opt_send_without_block +(CALL_INFO ci, CALL_CACHE cc) +(...) +(VALUE val) +// attr bool leaf = false; /* Of course it isn't. */ +// attr bool handles_sp = true; +// attr rb_snum_t sp_inc = -ci->orig_argc; +{ + struct rb_calling_info calling; + calling.block_handler = VM_BLOCK_HANDLER_NONE; + vm_search_method(ci, cc, calling.recv = TOPN(calling.argc = ci->orig_argc)); + CALL_METHOD(&calling, ci, cc); +} + DEFINE_INSN opt_str_freeze (VALUE str, CALL_INFO ci, CALL_CACHE cc) @@ -806,22 +822,6 @@ opt_newarray_min val = vm_opt_newarray_min(num, STACK_ADDR_FROM_TOP(num)); } -/* Invoke method without block */ -DEFINE_INSN -opt_send_without_block -(CALL_INFO ci, CALL_CACHE cc) -(...) -(VALUE val) -// attr bool leaf = false; /* Of course it isn't. */ -// attr bool handles_sp = true; -// attr rb_snum_t sp_inc = -ci->orig_argc; -{ - struct rb_calling_info calling; - calling.block_handler = VM_BLOCK_HANDLER_NONE; - vm_search_method(ci, cc, calling.recv = TOPN(calling.argc = ci->orig_argc)); - CALL_METHOD(&calling, ci, cc); -} - /* super(args) # args.size => num */ DEFINE_INSN invokesuper |