RJIT: Fix mapping offsets in stack_swap

This commit is contained in:
Takashi Kokubun 2023-04-04 22:05:45 -07:00
parent f79912ea78
commit 6d8875b5d7

View File

@ -3346,16 +3346,16 @@ module RubyVM::RJIT
stack0_mem = ctx.stack_opnd(offset0) stack0_mem = ctx.stack_opnd(offset0)
stack1_mem = ctx.stack_opnd(offset1) stack1_mem = ctx.stack_opnd(offset1)
mapping0 = ctx.get_opnd_mapping(StackOpnd[0]) mapping0 = ctx.get_opnd_mapping(StackOpnd[offset0])
mapping1 = ctx.get_opnd_mapping(StackOpnd[1]) mapping1 = ctx.get_opnd_mapping(StackOpnd[offset1])
asm.mov(:rax, stack0_mem) asm.mov(:rax, stack0_mem)
asm.mov(:rcx, stack1_mem) asm.mov(:rcx, stack1_mem)
asm.mov(stack0_mem, :rcx) asm.mov(stack0_mem, :rcx)
asm.mov(stack1_mem, :rax) asm.mov(stack1_mem, :rax)
ctx.set_opnd_mapping(StackOpnd[0], mapping1); ctx.set_opnd_mapping(StackOpnd[offset0], mapping1)
ctx.set_opnd_mapping(StackOpnd[1], mapping0); ctx.set_opnd_mapping(StackOpnd[offset1], mapping0)
end end
def jit_getlocal_generic(jit, ctx, asm, idx:, level:) def jit_getlocal_generic(jit, ctx, asm, idx:, level:)