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
-~----------~----~----~----~------~----~------~--~---

Reply via email to