Index: src/ia32/code-stubs-ia32.cc |
diff --git a/src/ia32/code-stubs-ia32.cc b/src/ia32/code-stubs-ia32.cc |
index 459ef15756a5b11d26cf238e33070a30816c9144..a20ab718e4ff2c5d520850b1c8b28e5360b9b725 100644 |
--- a/src/ia32/code-stubs-ia32.cc |
+++ b/src/ia32/code-stubs-ia32.cc |
@@ -138,14 +138,11 @@ void FastNewContextStub::Generate(MacroAssembler* masm) { |
__ Set(ebx, Immediate(0)); // Set to NULL. |
__ mov(Operand(eax, Context::SlotOffset(Context::CLOSURE_INDEX)), ecx); |
__ mov(Operand(eax, Context::SlotOffset(Context::FCONTEXT_INDEX)), eax); |
- __ mov(Operand(eax, Context::SlotOffset(Context::PREVIOUS_INDEX)), ebx); |
+ __ mov(Operand(eax, Context::SlotOffset(Context::PREVIOUS_INDEX)), esi); |
__ mov(Operand(eax, Context::SlotOffset(Context::EXTENSION_INDEX)), ebx); |
- // Copy the global object from the surrounding context. We go through the |
- // context in the function (ecx) to match the allocation behavior we have |
- // in the runtime system (see Heap::AllocateFunctionContext). |
- __ mov(ebx, FieldOperand(ecx, JSFunction::kContextOffset)); |
- __ mov(ebx, Operand(ebx, Context::SlotOffset(Context::GLOBAL_INDEX))); |
+ // Copy the global object from the previous context. |
+ __ mov(ebx, Operand(esi, Context::SlotOffset(Context::GLOBAL_INDEX))); |
__ mov(Operand(eax, Context::SlotOffset(Context::GLOBAL_INDEX)), ebx); |
// Initialize the rest of the slots to undefined. |