Reviewers: Mads Ager, Description: Avoid calling ToRegister(register) when result is in register already, and register is shared.
Please review this at http://codereview.chromium.org/1325004 SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/ Affected files: M src/ia32/virtual-frame-ia32.cc Index: src/ia32/virtual-frame-ia32.cc =================================================================== --- src/ia32/virtual-frame-ia32.cc (revision 4259) +++ src/ia32/virtual-frame-ia32.cc (working copy) @@ -1040,18 +1040,23 @@ PrepareForCall(0, 0); if (!cgen()->allocator()->is_used(eax) || (value.is_register() && value.reg().is(eax))) { - value.ToRegister(eax); // No effect if value is in eax already. + if (!cgen()->allocator()->is_used(eax)) { + value.ToRegister(eax); + } MoveResultsToRegisters(&key, &receiver, ecx, edx); value.Unuse(); } else if (!cgen()->allocator()->is_used(ecx) || (key.is_register() && key.reg().is(ecx))) { - // Receiver and/or key are in eax. - key.ToRegister(ecx); + if (!cgen()->allocator()->is_used(ecx)) { + key.ToRegister(ecx); + } MoveResultsToRegisters(&value, &receiver, eax, edx); key.Unuse(); } else if (!cgen()->allocator()->is_used(edx) || (receiver.is_register() && receiver.reg().is(edx))) { - receiver.ToRegister(edx); + if (!cgen()->allocator()->is_used(edx)) { + receiver.ToRegister(edx); + } MoveResultsToRegisters(&key, &value, ecx, eax); receiver.Unuse(); } else { -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev To unsubscribe from this group, send email to v8-dev+unsubscribegooglegroups.com or reply to this email with the words "REMOVE ME" as the subject.
