Revision: 3596
Author: [email protected]
Date: Wed Jan 13 04:13:37 2010
Log: Fix bug in top-level code generator with global receiver.

We did not correcty pass the global receiver object in some cases.
This change fixes this bug on all three platforms.

Review URL: http://codereview.chromium.org/542053
http://code.google.com/p/v8/source/detail?r=3596

Modified:
 /branches/bleeding_edge/src/arm/fast-codegen-arm.cc
 /branches/bleeding_edge/src/ia32/fast-codegen-ia32.cc
 /branches/bleeding_edge/src/x64/fast-codegen-x64.cc

=======================================
--- /branches/bleeding_edge/src/arm/fast-codegen-arm.cc Wed Jan 13 03:29:08 2010 +++ /branches/bleeding_edge/src/arm/fast-codegen-arm.cc Wed Jan 13 04:13:37 2010
@@ -1129,6 +1129,7 @@
       // Load receiver object into r1.
       if (prop->is_synthetic()) {
         __ ldr(r1, CodeGenerator::GlobalObject());
+ __ ldr(r1, FieldMemOperand(r1, GlobalObject::kGlobalReceiverOffset));
       } else {
         __ ldr(r1, MemOperand(sp, kPointerSize));
       }
=======================================
--- /branches/bleeding_edge/src/ia32/fast-codegen-ia32.cc Wed Jan 13 03:29:08 2010 +++ /branches/bleeding_edge/src/ia32/fast-codegen-ia32.cc Wed Jan 13 04:13:37 2010
@@ -1111,7 +1111,8 @@
       __ push(eax);
       // Push receiver object on stack.
       if (prop->is_synthetic()) {
-        __ push(CodeGenerator::GlobalObject());
+        __ mov(ecx, CodeGenerator::GlobalObject());
+        __ push(FieldOperand(ecx, GlobalObject::kGlobalReceiverOffset));
       } else {
         __ push(ebx);
       }
=======================================
--- /branches/bleeding_edge/src/x64/fast-codegen-x64.cc Wed Jan 13 03:29:08 2010 +++ /branches/bleeding_edge/src/x64/fast-codegen-x64.cc Wed Jan 13 04:13:37 2010
@@ -1128,7 +1128,8 @@
       __ push(rax);
       // Push receiver object on stack.
       if (prop->is_synthetic()) {
-        __ push(CodeGenerator::GlobalObject());
+        __ movq(rcx, CodeGenerator::GlobalObject());
+        __ push(FieldOperand(rcx, GlobalObject::kGlobalReceiverOffset));
       } else {
         __ push(rbx);
       }
-- 
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to