Index: src/arm/lithium-codegen-arm.cc |
diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc |
index 9fdb22b8d50114c43dba07cab931fa8403f0616f..45ebfae2c4d53278cfd0d2e12a491ded77d475c6 100644 |
--- a/src/arm/lithium-codegen-arm.cc |
+++ b/src/arm/lithium-codegen-arm.cc |
@@ -568,30 +568,13 @@ MemOperand LCodeGen::ToMemOperand(LOperand* op) const { |
ASSERT(!op->IsRegister()); |
ASSERT(!op->IsDoubleRegister()); |
ASSERT(op->IsStackSlot() || op->IsDoubleStackSlot()); |
- int index = op->index(); |
- if (index >= 0) { |
- // Local or spill slot. Skip the frame pointer, function, and |
- // context in the fixed part of the frame. |
- return MemOperand(fp, -(index + 3) * kPointerSize); |
- } else { |
- // Incoming parameter. Skip the return address. |
- return MemOperand(fp, -(index - 1) * kPointerSize); |
- } |
+ return MemOperand(fp, StackSlotOffset(op->index())); |
} |
MemOperand LCodeGen::ToHighMemOperand(LOperand* op) const { |
ASSERT(op->IsDoubleStackSlot()); |
- int index = op->index(); |
- if (index >= 0) { |
- // Local or spill slot. Skip the frame pointer, function, context, |
- // and the first word of the double in the fixed part of the frame. |
- return MemOperand(fp, -(index + 3) * kPointerSize + kPointerSize); |
- } else { |
- // Incoming parameter. Skip the return address and the first word of |
- // the double. |
- return MemOperand(fp, -(index - 1) * kPointerSize + kPointerSize); |
- } |
+ return MemOperand(fp, StackSlotOffset(op->index()) + kPointerSize); |
} |