| Index: src/compiler/x64/code-generator-x64.cc
|
| diff --git a/src/compiler/x64/code-generator-x64.cc b/src/compiler/x64/code-generator-x64.cc
|
| index 1a96a3a4c7950bdc9abbace94c806af4e1fdd954..34e8de42780f8c4904a70319ab352a690105ad2c 100644
|
| --- a/src/compiler/x64/code-generator-x64.cc
|
| +++ b/src/compiler/x64/code-generator-x64.cc
|
| @@ -331,22 +331,27 @@ void EmitOOLTrapIfNeeded(Zone* zone, CodeGenerator* codegen,
|
| } \
|
| } while (0)
|
|
|
| -
|
| -#define ASSEMBLE_BINOP(asm_instr) \
|
| - do { \
|
| - if (HasImmediateInput(instr, 1)) { \
|
| - if (instr->InputAt(0)->IsRegister()) { \
|
| - __ asm_instr(i.InputRegister(0), i.InputImmediate(1)); \
|
| - } else { \
|
| - __ asm_instr(i.InputOperand(0), i.InputImmediate(1)); \
|
| - } \
|
| - } else { \
|
| - if (instr->InputAt(1)->IsRegister()) { \
|
| - __ asm_instr(i.InputRegister(0), i.InputRegister(1)); \
|
| - } else { \
|
| - __ asm_instr(i.InputRegister(0), i.InputOperand(1)); \
|
| - } \
|
| - } \
|
| +#define ASSEMBLE_BINOP(asm_instr) \
|
| + do { \
|
| + if (AddressingModeField::decode(instr->opcode()) != kMode_None) { \
|
| + size_t index = 1; \
|
| + Operand right = i.MemoryOperand(&index); \
|
| + __ asm_instr(i.InputRegister(0), right); \
|
| + } else { \
|
| + if (HasImmediateInput(instr, 1)) { \
|
| + if (instr->InputAt(0)->IsRegister()) { \
|
| + __ asm_instr(i.InputRegister(0), i.InputImmediate(1)); \
|
| + } else { \
|
| + __ asm_instr(i.InputOperand(0), i.InputImmediate(1)); \
|
| + } \
|
| + } else { \
|
| + if (instr->InputAt(1)->IsRegister()) { \
|
| + __ asm_instr(i.InputRegister(0), i.InputRegister(1)); \
|
| + } else { \
|
| + __ asm_instr(i.InputRegister(0), i.InputOperand(1)); \
|
| + } \
|
| + } \
|
| + } \
|
| } while (0)
|
|
|
| #define ASSEMBLE_COMPARE(asm_instr) \
|
|
|