Index: src/x64/code-stubs-x64.cc |
diff --git a/src/x64/code-stubs-x64.cc b/src/x64/code-stubs-x64.cc |
index 61f94bea487a4acef7e811964bfb9985f42bc890..e38591580b10e765c845bc5689d93445b240e8b1 100644 |
--- a/src/x64/code-stubs-x64.cc |
+++ b/src/x64/code-stubs-x64.cc |
@@ -91,7 +91,8 @@ void FastNewClosureStub::Generate(MacroAssembler* masm) { |
void FastNewContextStub::Generate(MacroAssembler* masm) { |
// Try to allocate the context in new space. |
Label gc; |
- __ AllocateInNewSpace((slots_ * kPointerSize) + FixedArray::kHeaderSize, |
+ int length = slots_ + Context::MIN_CONTEXT_SLOTS; |
+ __ AllocateInNewSpace((length * kPointerSize) + FixedArray::kHeaderSize, |
rax, rbx, rcx, &gc, TAG_OBJECT); |
// Get the function from the stack. |
@@ -100,7 +101,7 @@ void FastNewContextStub::Generate(MacroAssembler* masm) { |
// Setup the object header. |
__ LoadRoot(kScratchRegister, Heap::kContextMapRootIndex); |
__ movq(FieldOperand(rax, HeapObject::kMapOffset), kScratchRegister); |
- __ Move(FieldOperand(rax, FixedArray::kLengthOffset), Smi::FromInt(slots_)); |
+ __ Move(FieldOperand(rax, FixedArray::kLengthOffset), Smi::FromInt(length)); |
// Setup the fixed slots. |
__ Set(rbx, 0); // Set to NULL. |
@@ -115,7 +116,7 @@ void FastNewContextStub::Generate(MacroAssembler* masm) { |
// Initialize the rest of the slots to undefined. |
__ LoadRoot(rbx, Heap::kUndefinedValueRootIndex); |
- for (int i = Context::MIN_CONTEXT_SLOTS; i < slots_; i++) { |
+ for (int i = Context::MIN_CONTEXT_SLOTS; i < length; i++) { |
__ movq(Operand(rax, Context::SlotOffset(i)), rbx); |
} |