| 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);
|
| }
|
|
|
|
|