diff options
| author | Takashi Kokubun <takashikkbn@gmail.com> | 2023-02-08 16:55:50 -0800 |
|---|---|---|
| committer | Takashi Kokubun <takashikkbn@gmail.com> | 2023-03-05 22:41:35 -0800 |
| commit | 50bd7326c1a09c9c28f5483299c3f199ac8da7b5 (patch) | |
| tree | add1b445ab622606cbba8d06473a440fc90fbb1d | |
| parent | ecae1cd74e2f60f07399df8bf2023967bd605abf (diff) | |
Skip Hash on opt_aref for now
| -rw-r--r-- | lib/ruby_vm/mjit/insn_compiler.rb | 7 | ||||
| -rw-r--r-- | mjit_c.h | 1 | ||||
| -rw-r--r-- | mjit_c.rb | 1 |
3 files changed, 9 insertions, 0 deletions
diff --git a/lib/ruby_vm/mjit/insn_compiler.rb b/lib/ruby_vm/mjit/insn_compiler.rb index 8553f644a6..6f96e57ff1 100644 --- a/lib/ruby_vm/mjit/insn_compiler.rb +++ b/lib/ruby_vm/mjit/insn_compiler.rb @@ -541,6 +541,13 @@ module RubyVM::MJIT asm.incr_counter(:optaref_array) CantCompile elsif comptime_recv.class == Hash + # jit_prepare_routine_call seems to break something. Disabled until we figure it out. + disabled = true + if disabled + asm.incr_counter(:optaref_hash) + return CantCompile + end + unless @invariants.assume_bop_not_redefined(jit, C.HASH_REDEFINED_OP_FLAG, C.BOP_AREF) return CantCompile end @@ -147,6 +147,7 @@ MJIT_RUNTIME_COUNTERS( optaref_argc_not_one, optaref_array, + optaref_hash, optaref_not_hash, optaref_send, @@ -957,6 +957,7 @@ module RubyVM::MJIT # :nodoc: all getivar_too_complex: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), getivar_too_complex)")], optaref_argc_not_one: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), optaref_argc_not_one)")], optaref_array: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), optaref_array)")], + optaref_hash: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), optaref_hash)")], optaref_not_hash: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), optaref_not_hash)")], optaref_send: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), optaref_send)")], compiled_block_count: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), compiled_block_count)")], |
