Index: src/x64/lithium-codegen-x64.cc |
diff --git a/src/x64/lithium-codegen-x64.cc b/src/x64/lithium-codegen-x64.cc |
index 2b5def39c1050fe1d8f4d443a8e2f470e232fc6f..0398d7f5d1f1bcb5444ff38546ea322b2cf29524 100644 |
--- a/src/x64/lithium-codegen-x64.cc |
+++ b/src/x64/lithium-codegen-x64.cc |
@@ -592,15 +592,23 @@ void LCodeGen::AddToTranslation(LEnvironment* environment, |
} |
if (op->IsStackSlot()) { |
+ int index = op->index(); |
+ if (index >= 0) { |
+ index += StandardFrameConstants::kFixedFrameSize / kPointerSize; |
+ } |
if (is_tagged) { |
- translation->StoreStackSlot(op->index()); |
+ translation->StoreStackSlot(index); |
} else if (is_uint32) { |
- translation->StoreUint32StackSlot(op->index()); |
+ translation->StoreUint32StackSlot(index); |
} else { |
- translation->StoreInt32StackSlot(op->index()); |
+ translation->StoreInt32StackSlot(index); |
} |
} else if (op->IsDoubleStackSlot()) { |
- translation->StoreDoubleStackSlot(op->index()); |
+ int index = op->index(); |
+ if (index >= 0) { |
+ index += StandardFrameConstants::kFixedFrameSize / kPointerSize; |
+ } |
+ translation->StoreDoubleStackSlot(index); |
} else if (op->IsRegister()) { |
Register reg = ToRegister(op); |
if (is_tagged) { |