#undef VALUE_FITS_IN_REGISTER
#undef ARGUMENTS_IN_REGISTERS
+#define HAVE_ALU_OPS_WITH_MEM_OPERAND 1
static const RegisterID StackFrameRegister = JSC::X86Registers::ebp;
static const RegisterID StackPointerRegister = JSC::X86Registers::esp;
#define VALUE_FITS_IN_REGISTER
#define ARGUMENTS_IN_REGISTERS
+#define HAVE_ALU_OPS_WITH_MEM_OPERAND 1
static const RegisterID StackFrameRegister = JSC::X86Registers::ebp;
static const RegisterID StackPointerRegister = JSC::X86Registers::esp;
#undef VALUE_FITS_IN_REGISTER
#define ARGUMENTS_IN_REGISTERS
+#undef HAVE_ALU_OPS_WITH_MEM_OPERAND
static const RegisterID StackFrameRegister = JSC::ARMRegisters::r4;
static const RegisterID StackPointerRegister = JSC::ARMRegisters::sp;
Jump inline_add32(Address addr, RegisterID reg)
{
+#if HAVE(ALU_OPS_WITH_MEM_OPERAND)
return branchAdd32(Overflow, addr, reg);
+#else
+ load32(addr, ScratchRegister);
+ return branchAdd32(Overflow, ScratchRegister, reg);
+#endif
}
Jump inline_add32(TrustedImm32 imm, RegisterID reg)
Jump inline_sub32(Address addr, RegisterID reg)
{
+#if HAVE(ALU_OPS_WITH_MEM_OPERAND)
return branchSub32(Overflow, addr, reg);
+#else
+ load32(addr, ScratchRegister);
+ return branchSub32(Overflow, ScratchRegister, reg);
+#endif
}
Jump inline_sub32(TrustedImm32 imm, RegisterID reg)
Jump inline_mul32(Address addr, RegisterID reg)
{
+#if HAVE(ALU_OPS_WITH_MEM_OPERAND)
return branchMul32(Overflow, addr, reg);
+#else
+ load32(addr, ScratchRegister);
+ return branchMul32(Overflow, ScratchRegister, reg);
+#endif
}
Jump inline_mul32(TrustedImm32 imm, RegisterID reg)
Jump inline_and32(Address addr, RegisterID reg)
{
+#if HAVE(ALU_OPS_WITH_MEM_OPERAND)
and32(addr, reg);
+#else
+ load32(addr, ScratchRegister);
+ and32(ScratchRegister, reg);
+#endif
return Jump();
}
Jump inline_or32(Address addr, RegisterID reg)
{
+#if HAVE(ALU_OPS_WITH_MEM_OPERAND)
or32(addr, reg);
+#else
+ load32(addr, ScratchRegister);
+ or32(ScratchRegister, reg);
+#endif
return Jump();
}
Jump inline_xor32(Address addr, RegisterID reg)
{
+#if HAVE(ALU_OPS_WITH_MEM_OPERAND)
xor32(addr, reg);
+#else
+ load32(addr, ScratchRegister);
+ xor32(ScratchRegister, reg);
+#endif
return Jump();
}