diff options
author | Takashi Kokubun <[email protected]> | 2023-01-07 13:54:26 -0800 |
---|---|---|
committer | Takashi Kokubun <[email protected]> | 2023-03-05 22:11:20 -0800 |
commit | ee6d627b434c4bc977c059a0e1d885800de90b63 (patch) | |
tree | 042e1da8d490d88b2a5f092a505458248c84ab7d /lib/ruby_vm | |
parent | 850303ded65e2a949732a6a7d037079d610d22a6 (diff) |
Implement putobject 0/1
Diffstat (limited to 'lib/ruby_vm')
-rw-r--r-- | lib/ruby_vm/mjit/insn_compiler.rb | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/lib/ruby_vm/mjit/insn_compiler.rb b/lib/ruby_vm/mjit/insn_compiler.rb index c13287f74c..3d349e611c 100644 --- a/lib/ruby_vm/mjit/insn_compiler.rb +++ b/lib/ruby_vm/mjit/insn_compiler.rb @@ -17,7 +17,7 @@ module RubyVM::MJIT asm.incr_counter(:mjit_insns_count) asm.comment("Insn: #{insn.name}") - # 7/101 + # 9/101 case insn.name # nop # getlocal @@ -115,6 +115,10 @@ module RubyVM::MJIT # opt_invokebuiltin_delegate # opt_invokebuiltin_delegate_leave when :getlocal_WC_0 then getlocal_WC_0(jit, ctx, asm) + # setlocal_WC_0 + # setlocal_WC_1 + when :putobject_INT2FIX_0_ then putobject_INT2FIX_0_(jit, ctx, asm) + when :putobject_INT2FIX_1_ then putobject_INT2FIX_1_(jit, ctx, asm) else CantCompile end end @@ -167,10 +171,7 @@ module RubyVM::MJIT # @param jit [RubyVM::MJIT::JITState] # @param ctx [RubyVM::MJIT::Context] # @param asm [RubyVM::MJIT::Assembler] - def putobject(jit, ctx, asm) - # Get operands - val = jit.operand(0) - + def putobject(jit, ctx, asm, val: jit.operand(0)) # Push it to the stack # TODO: GC offsets raise 'sp_offset != stack_size' if ctx.sp_offset != ctx.stack_size # TODO: handle this @@ -408,8 +409,20 @@ module RubyVM::MJIT # getlocal_WC_1 # setlocal_WC_0 # setlocal_WC_1 - # putobject_INT2FIX_0_ - # putobject_INT2FIX_1_ + + # @param jit [RubyVM::MJIT::JITState] + # @param ctx [RubyVM::MJIT::Context] + # @param asm [RubyVM::MJIT::Assembler] + def putobject_INT2FIX_0_(jit, ctx, asm) + putobject(jit, ctx, asm, val: C.to_value(0)) + end + + # @param jit [RubyVM::MJIT::JITState] + # @param ctx [RubyVM::MJIT::Context] + # @param asm [RubyVM::MJIT::Assembler] + def putobject_INT2FIX_1_(jit, ctx, asm) + putobject(jit, ctx, asm, val: C.to_value(1)) + end # # Helpers |