Reviewers: Vyacheslav Egorov, Description: Fix a performance bug in the register contraints for polymorphic loads.
The context is only needed in the esi register if there is a call to the generic stub. Please review this at https://chromiumcodereview.appspot.com/9467001/ SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/ Affected files: M src/ia32/lithium-ia32.cc Index: src/ia32/lithium-ia32.cc =================================================================== --- src/ia32/lithium-ia32.cc (revision 10817) +++ src/ia32/lithium-ia32.cc (working copy) @@ -1935,13 +1935,14 @@ LInstruction* LChunkBuilder::DoLoadNamedFieldPolymorphic( HLoadNamedFieldPolymorphic* instr) { ASSERT(instr->representation().IsTagged()); - LOperand* context = UseFixed(instr->context(), esi); if (instr->need_generic()) { + LOperand* context = UseFixed(instr->context(), esi); LOperand* obj = UseFixed(instr->object(), eax); LLoadNamedFieldPolymorphic* result = new(zone()) LLoadNamedFieldPolymorphic(context, obj); return MarkAsCall(DefineFixed(result, eax), instr); } else { + LOperand* context = UseAny(instr->context()); // Not actually used. LOperand* obj = UseRegisterAtStart(instr->object()); LLoadNamedFieldPolymorphic* result = new(zone()) LLoadNamedFieldPolymorphic(context, obj); -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
