Index: src/crankshaft/ia32/lithium-codegen-ia32.cc |
diff --git a/src/crankshaft/ia32/lithium-codegen-ia32.cc b/src/crankshaft/ia32/lithium-codegen-ia32.cc |
index 6f7c1132876ba80380d35414814b08e5fd28fb5a..de20520eda18ea8d7b77d0ce42b10aedda5811ae 100644 |
--- a/src/crankshaft/ia32/lithium-codegen-ia32.cc |
+++ b/src/crankshaft/ia32/lithium-codegen-ia32.cc |
@@ -483,7 +483,7 @@ |
masm()->nop(); |
} |
} |
- safepoints_.Emit(masm(), GetTotalFrameSlotCount()); |
+ safepoints_.Emit(masm(), GetStackSlotCount()); |
return !is_aborted(); |
} |
@@ -571,7 +571,7 @@ |
if (op->IsDoubleRegister()) return Operand(ToDoubleRegister(op)); |
DCHECK(op->IsStackSlot() || op->IsDoubleStackSlot()); |
if (NeedsEagerFrame()) { |
- return Operand(ebp, FrameSlotToFPOffset(op->index())); |
+ return Operand(ebp, StackSlotOffset(op->index())); |
} else { |
// Retrieve parameter without eager stack-frame relative to the |
// stack-pointer. |
@@ -583,7 +583,7 @@ |
Operand LCodeGen::HighOperand(LOperand* op) { |
DCHECK(op->IsDoubleStackSlot()); |
if (NeedsEagerFrame()) { |
- return Operand(ebp, FrameSlotToFPOffset(op->index()) + kPointerSize); |
+ return Operand(ebp, StackSlotOffset(op->index()) + kPointerSize); |
} else { |
// Retrieve parameter without eager stack-frame relative to the |
// stack-pointer. |
@@ -652,6 +652,9 @@ |
if (op->IsStackSlot()) { |
int index = op->index(); |
+ if (index >= 0) { |
+ index += StandardFrameConstants::kFixedFrameSize / kPointerSize; |
+ } |
if (is_tagged) { |
translation->StoreStackSlot(index); |
} else if (is_uint32) { |
@@ -661,6 +664,9 @@ |
} |
} else if (op->IsDoubleStackSlot()) { |
int index = op->index(); |
+ if (index >= 0) { |
+ index += StandardFrameConstants::kFixedFrameSize / kPointerSize; |
+ } |
translation->StoreDoubleStackSlot(index); |
} else if (op->IsRegister()) { |
Register reg = ToRegister(op); |