Comments. Code generator comments apply to all three platforms.
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()) { 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. http://codereview.chromium.org/340037/diff/1/10#newcode571 Line 571: void FastCodeGenerator::DoCallWithIC(Call* expr) { EmitCallWithIC? http://codereview.chromium.org/340037/diff/1/10#newcode584 Line 584: __ Call(ic, RelocInfo::CODE_TARGET_CONTEXT); I think the reloc info here has to depend on whether the receiver is the global object or not. http://codereview.chromium.org/340037/diff/1/10#newcode621 Line 621: // Use IC Use call IC. http://codereview.chromium.org/340037/diff/1/10#newcode624 Line 624: Visit(prop->obj()); Comment that you will handle keyed method calls with a keyed load followed by function call. http://codereview.chromium.org/340037/diff/1/10#newcode631 Line 631: __ add(sp, sp, Operand(kPointerSize)); __ 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)); http://codereview.chromium.org/340037/diff/1/10#newcode650 Line 650: __ mov(r1, Operand(var->name())); Indentation is off. http://codereview.chromium.org/340037 --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
