mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Skip opt_case_dispatch
This commit is contained in:
parent
fc13ff14a2
commit
96fd8afbf4
1 changed files with 17 additions and 0 deletions
|
@ -2447,6 +2447,22 @@ gen_opt_regexpmatch2(jitstate_t *jit, ctx_t *ctx)
|
||||||
return gen_opt_send_without_block(jit, ctx);
|
return gen_opt_send_without_block(jit, ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static codegen_status_t
|
||||||
|
gen_opt_case_dispatch(jitstate_t* jit, ctx_t* ctx)
|
||||||
|
{
|
||||||
|
// Normally this instruction would lookup the key in a hash and jump to an
|
||||||
|
// offset based on that.
|
||||||
|
// Instead we can take the fallback case and continue with the next
|
||||||
|
// instruciton.
|
||||||
|
// We'd hope that our jitted code will be sufficiently fast without the
|
||||||
|
// hash lookup, at least for small hashes, but it's worth revisiting this
|
||||||
|
// assumption in the future.
|
||||||
|
|
||||||
|
ctx_stack_pop(ctx, 1);
|
||||||
|
|
||||||
|
return YJIT_KEEP_COMPILING; // continue with the next instruction
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
gen_branchif_branch(codeblock_t* cb, uint8_t* target0, uint8_t* target1, uint8_t shape)
|
gen_branchif_branch(codeblock_t* cb, uint8_t* target0, uint8_t* target1, uint8_t shape)
|
||||||
{
|
{
|
||||||
|
@ -4215,6 +4231,7 @@ yjit_init_codegen(void)
|
||||||
yjit_reg_op(BIN(opt_getinlinecache), gen_opt_getinlinecache);
|
yjit_reg_op(BIN(opt_getinlinecache), gen_opt_getinlinecache);
|
||||||
yjit_reg_op(BIN(opt_invokebuiltin_delegate), gen_opt_invokebuiltin_delegate);
|
yjit_reg_op(BIN(opt_invokebuiltin_delegate), gen_opt_invokebuiltin_delegate);
|
||||||
yjit_reg_op(BIN(opt_invokebuiltin_delegate_leave), gen_opt_invokebuiltin_delegate);
|
yjit_reg_op(BIN(opt_invokebuiltin_delegate_leave), gen_opt_invokebuiltin_delegate);
|
||||||
|
yjit_reg_op(BIN(opt_case_dispatch), gen_opt_case_dispatch);
|
||||||
yjit_reg_op(BIN(branchif), gen_branchif);
|
yjit_reg_op(BIN(branchif), gen_branchif);
|
||||||
yjit_reg_op(BIN(branchunless), gen_branchunless);
|
yjit_reg_op(BIN(branchunless), gen_branchunless);
|
||||||
yjit_reg_op(BIN(branchnil), gen_branchnil);
|
yjit_reg_op(BIN(branchnil), gen_branchnil);
|
||||||
|
|
Loading…
Add table
Reference in a new issue