From: Aleksey Demakov Date: Thu, 8 Jun 2006 18:32:12 +0000 (+0000) Subject: fix problem with long constants introduced by previous commit X-Git-Tag: before.move.to.git~233 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=54747d29c306c460665222b470be14a67cc609de;p=francis%2Flibjit.git fix problem with long constants introduced by previous commit --- diff --git a/jit/jit-rules-x86.ins b/jit/jit-rules-x86.ins index c776736..4b7f845 100644 --- a/jit/jit-rules-x86.ins +++ b/jit/jit-rules-x86.ins @@ -2402,11 +2402,9 @@ JIT_OP_STORE_RELATIVE_INT: ternary } JIT_OP_STORE_RELATIVE_LONG: ternary - [reg, imm, imm, scratch("?")] -> { - x86_mov_reg_mem(inst, $4, $2, 4); - x86_mov_membase_reg(inst, $1, $3, $4, 4); - x86_mov_reg_mem(inst, $4, $2 + 4, 4); - x86_mov_membase_reg(inst, $1, $3 + 4, $4, 4); + [reg, imm, imm] -> { + x86_mov_membase_imm(inst, $1, $3, *(int *)($2), 4); + x86_mov_membase_imm(inst, $1, $3 + 4, *(int *)($2 + 4), 4); } [reg, local, imm, scratch("?")] -> { x86_mov_reg_membase(inst, $4, X86_EBP, $2, 4); @@ -2653,11 +2651,9 @@ JIT_OP_STORE_ELEMENT_INT: ternary } JIT_OP_STORE_ELEMENT_LONG: ternary - [reg, reg, imm, scratch("?")] -> { - x86_mov_reg_mem(inst, $4, $3, 4); - x86_mov_memindex_reg(inst, $1, 0, $2, 3, $4, 4); - x86_mov_reg_mem(inst, $4, $3 + 4, 4); - x86_mov_memindex_reg(inst, $1, 4, $2, 3, $4, 4); + [reg, reg, imm] -> { + x86_mov_memindex_imm(inst, $1, 0, $2, 3, *(int *)($3), 4); + x86_mov_memindex_imm(inst, $1, 4, $2, 3, *(int *)($3 + 4), 4); } [reg, reg, local, scratch("?")] -> { x86_mov_reg_membase(inst, $4, X86_EBP, $3, 4);