Uploaded new patch. Added a mjsunit test.
http://codereview.chromium.org/340037/diff/1/10 File src/arm/fast-codegen-arm.cc (right): http://codereview.chromium.org/340037/diff/1/10#newcode104 Line 104: if (return_label_.is_bound()) { On 2009/10/29 19:43:13, Kevin Millikin wrote: > This code is duplicated, so it should be abstracted into > "GenerateReturnSequence" or "EmitReturnSequence". (I think Bill used "Emit" > earlier for short-circuited boolean operations.) > You can do that as a separate change right after you put this one in. Yes. Good point. http://codereview.chromium.org/340037/diff/1/10#newcode571 Line 571: void FastCodeGenerator::DoCallWithIC(Call* expr) { On 2009/10/29 19:43:13, Kevin Millikin wrote: > EmitCallWithIC? Done. http://codereview.chromium.org/340037/diff/1/10#newcode584 Line 584: __ Call(ic, RelocInfo::CODE_TARGET_CONTEXT); On 2009/10/29 19:43:13, Kevin Millikin wrote: > I think the reloc info here has to depend on whether the receiver is the global > object or not. Good point. Done. http://codereview.chromium.org/340037/diff/1/10#newcode621 Line 621: // Use IC On 2009/10/29 19:43:13, Kevin Millikin wrote: > Use call IC. Done. http://codereview.chromium.org/340037/diff/1/10#newcode624 Line 624: Visit(prop->obj()); On 2009/10/29 19:43:13, Kevin Millikin wrote: > Comment that you will handle keyed method calls with a keyed load followed by > function call. Done. http://codereview.chromium.org/340037/diff/1/10#newcode631 Line 631: __ add(sp, sp, Operand(kPointerSize)); On 2009/10/29 19:43:13, Kevin Millikin wrote: > __ pop() on ARM. But I think we can be clever about stack manipulation starting > here: > // Receiver into r1. > if (prop->is_synthetic()) { > __ ldr(r1, CodeGenerator::GlobalObject()); > } else { > __ ldr(r1, MemOperand(sp, kPointerSize)); > } > // Overwrite (object,key) with (function,receiver). > __ str(r0, MemOperand(sp, kPointerSize)); > __ str(r1, MemOperand(sp)); Agreed. I left IA-32 and x64 unchanged since push/pop reg are more compact than mov [esp], reg. http://codereview.chromium.org/340037/diff/1/10#newcode650 Line 650: __ mov(r1, Operand(var->name())); On 2009/10/29 19:43:13, Kevin Millikin wrote: > Indentation is off. Done. http://codereview.chromium.org/340037 --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
