Revision: 3509
Author: [email protected]
Date: Mon Dec 21 07:09:26 2009
Log: Very experimental fix for issue 555.
Review URL: http://codereview.chromium.org/508006
http://code.google.com/p/v8/source/detail?r=3509
Modified:
/branches/bleeding_edge/src/ia32/codegen-ia32.cc
=======================================
--- /branches/bleeding_edge/src/ia32/codegen-ia32.cc Mon Dec 21 07:04:00
2009
+++ /branches/bleeding_edge/src/ia32/codegen-ia32.cc Mon Dec 21 07:09:26
2009
@@ -6738,8 +6738,11 @@
__ mov(Operand(eax, Context::SlotOffset(Context::PREVIOUS_INDEX)), ebx);
__ mov(Operand(eax, Context::SlotOffset(Context::EXTENSION_INDEX)), ebx);
- // Copy the global object from the surrounding context.
- __ mov(ebx, Operand(esi, Context::SlotOffset(Context::GLOBAL_INDEX)));
+ // 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)));
__ mov(Operand(eax, Context::SlotOffset(Context::GLOBAL_INDEX)), ebx);
// Initialize the rest of the slots to undefined.
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev