Improve load of global variables.
authorwhesse@chromium.org <whesse@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Fri, 19 Feb 2010 10:05:33 +0000 (10:05 +0000)
committerwhesse@chromium.org <whesse@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Fri, 19 Feb 2010 10:05:33 +0000 (10:05 +0000)
Review URL: http://codereview.chromium.org/651019

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@3911 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/ia32/codegen-ia32.cc

index edf221bfb227689596b7d61e1500ee6d49c05f19..8f06f5d6f52d13bd1c0e781b79fd1a59e9e8d853 100644 (file)
@@ -689,6 +689,9 @@ void CodeGenerator::LoadReference(Reference* ref) {
     // The expression is a variable proxy that does not rewrite to a
     // property.  Global variables are treated as named property references.
     if (var->is_global()) {
+      // Named loads require object in eax.  Named stores don't use references.
+      // Spilling eax makes it free, so LoadGlobal loads directly into eax.
+      frame_->Spill(eax);
       LoadGlobal();
       ref->set_type(Reference::NAMED);
     } else {