http://codereview.chromium.org/1738003/diff/1/2 File src/arm/codegen-arm.cc (right):
http://codereview.chromium.org/1738003/diff/1/2#newcode1630 src/arm/codegen-arm.cc:1630: __ bind(&loop); On 2010/04/22 11:51:18, Søren Gjesse wrote:
How copying the arguments by having one register pointing at the
source and
using post increment to avoid recalculating for each iteration?
Good point. Loop changed to: Label loop; // r3 is a small non-negative integer, due to the test above. __ cmp(r3, Operand(0)); __ b(eq, &invoke); // Compute the address of the first argument. __ add(r2, r2, Operand(r3, LSL, kPointerSizeLog2)); __ add(r2, r2, Operand(kPointerSize)); __ bind(&loop); // Post-decrement argument address by kPointerSize on each iteration. __ ldr(r4, MemOperand(r2, kPointerSize, NegPostIndex)); __ push(r4); __ sub(r3, r3, Operand(1), SetCC); __ b(gt, &loop); http://codereview.chromium.org/1738003/diff/1/2#newcode1644 src/arm/codegen-arm.cc:1644: // unchanged, with 3 elements, so it is correct when we compile the On 2010/04/22 11:51:18, Søren Gjesse wrote:
Scary stuff "cheating" the virtual frame...
It is. http://codereview.chromium.org/1738003/show -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
