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

Reply via email to