Index: src/ia32/code-stubs-ia32.cc |
diff --git a/src/ia32/code-stubs-ia32.cc b/src/ia32/code-stubs-ia32.cc |
index c1747323aeea2f4a61f34d3b46930051de04082f..5f3400f83e8ea649f297fb872325fdfef243355d 100644 |
--- a/src/ia32/code-stubs-ia32.cc |
+++ b/src/ia32/code-stubs-ia32.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, |
eax, ebx, ecx, &gc, TAG_OBJECT); |
// Get the function from the stack. |
@@ -100,7 +101,7 @@ void FastNewContextStub::Generate(MacroAssembler* masm) { |
// Setup the object header. |
__ mov(FieldOperand(eax, HeapObject::kMapOffset), Factory::context_map()); |
__ mov(FieldOperand(eax, Context::kLengthOffset), |
- Immediate(Smi::FromInt(slots_))); |
+ Immediate(Smi::FromInt(length))); |
// Setup the fixed slots. |
__ Set(ebx, Immediate(0)); // Set to NULL. |
@@ -118,7 +119,7 @@ void FastNewContextStub::Generate(MacroAssembler* masm) { |
// Initialize the rest of the slots to undefined. |
__ mov(ebx, Factory::undefined_value()); |
- for (int i = Context::MIN_CONTEXT_SLOTS; i < slots_; i++) { |
+ for (int i = Context::MIN_CONTEXT_SLOTS; i < length; i++) { |
__ mov(Operand(eax, Context::SlotOffset(i)), ebx); |
} |