From 596adcf675e77a04e0607172f5947cc681b18b5c Mon Sep 17 00:00:00 2001 From: "whesse@chromium.org" Date: Tue, 11 May 2010 08:32:13 +0000 Subject: [PATCH] Optimize loading the global object for a named load on x64. This is a port of r3911 to x64. Review URL: http://codereview.chromium.org/1983005 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4642 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/x64/codegen-x64.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/x64/codegen-x64.cc b/src/x64/codegen-x64.cc index 7ee8359..77cdae5 100644 --- a/src/x64/codegen-x64.cc +++ b/src/x64/codegen-x64.cc @@ -5251,6 +5251,11 @@ 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()) { + // If rax is free, the register allocator prefers it. Thus the code + // generator will load the global object into rax, which is where + // LoadIC wants it. Most uses of Reference call LoadIC directly + // after the reference is created. + frame_->Spill(rax); LoadGlobal(); ref->set_type(Reference::NAMED); } else { -- 2.7.4