summaryrefslogtreecommitdiff
path: root/tool/ruby_vm/views/_mjit_compile_getinlinecache.erb
diff options
context:
space:
mode:
authorTakashi Kokubun <takashikkbn@gmail.com>2021-01-04 13:09:01 -0800
committerTakashi Kokubun <takashikkbn@gmail.com>2021-01-04 13:09:08 -0800
commit7a3322a0fd660d676f1918bd7c4a37676b44e1c2 (patch)
tree85e14184b6e285a1838486559468550fc563e665 /tool/ruby_vm/views/_mjit_compile_getinlinecache.erb
parent87c546b5fa97e6e226cce4daf417617a1143f642 (diff)
Fix broken JIT of getinlinecache
e7fc353f04 reverted vm_ic_hit_p's signature change made in 53babf35ef, which broke JIT compilation of getinlinecache. To make sure it doesn't happen again, I separated vm_inlined_ic_hit_p to make the intention clear.
Diffstat (limited to 'tool/ruby_vm/views/_mjit_compile_getinlinecache.erb')
-rw-r--r--tool/ruby_vm/views/_mjit_compile_getinlinecache.erb2
1 files changed, 1 insertions, 1 deletions
diff --git a/tool/ruby_vm/views/_mjit_compile_getinlinecache.erb b/tool/ruby_vm/views/_mjit_compile_getinlinecache.erb
index 637dea89e6..1acfdb7f0b 100644
--- a/tool/ruby_vm/views/_mjit_compile_getinlinecache.erb
+++ b/tool/ruby_vm/views/_mjit_compile_getinlinecache.erb
@@ -15,7 +15,7 @@
struct iseq_inline_constant_cache_entry *ice = ic->entry;
if (ice != NULL && ice->ic_serial && !status->compile_info->disable_const_cache) {
% # JIT: Inline everything in IC, and cancel the slow path
- fprintf(f, " if (vm_ic_hit_p((rb_serial_t)%"PRI_SERIALT_PREFIX"u, (const rb_cref_t *)0x%"PRIxVALUE", reg_cfp->ep)) {", ice->ic_serial, (VALUE)ice->ic_cref);
+ fprintf(f, " if (vm_inlined_ic_hit_p(0x%"PRIxVALUE", 0x%"PRIxVALUE", (const rb_cref_t *)0x%"PRIxVALUE", %"PRI_SERIALT_PREFIX"u, reg_cfp->ep)) {", ice->flags, ice->value, (VALUE)ice->ic_cref, ice->ic_serial);
fprintf(f, " stack[%d] = 0x%"PRIxVALUE";\n", b->stack_size, ice->value);
fprintf(f, " goto label_%d;\n", pos + insn_len(insn) + (int)dst);
fprintf(f, " }");