Reviewers: dstence, michael_dawson,
Description:
PPC: Clean up copy args loop in Generate_JSConstructStubHelper.
[email protected], [email protected]
BUG=
Please review this at https://codereview.chromium.org/1216073004/
Base URL: https://chromium.googlesource.com/v8/v8.git@master
Affected files (+4, -5 lines):
M src/ppc/builtins-ppc.cc
Index: src/ppc/builtins-ppc.cc
diff --git a/src/ppc/builtins-ppc.cc b/src/ppc/builtins-ppc.cc
index
99e7ea34165616ccd3987bed4524884f65594648..11b3b697f4bc41bd0f9b874fbd4978a2019908c9
100644
--- a/src/ppc/builtins-ppc.cc
+++ b/src/ppc/builtins-ppc.cc
@@ -641,7 +641,6 @@ static void
Generate_JSConstructStubHelper(MacroAssembler* masm,
// Retrieve smi-tagged arguments count from the stack.
__ LoadP(r6, MemOperand(sp));
- __ SmiUntag(r3, r6);
// Push new.target onto the construct frame. This is stored just below
the
// receiver on the stack.
@@ -655,7 +654,6 @@ static void
Generate_JSConstructStubHelper(MacroAssembler* masm,
__ addi(r5, fp, Operand(StandardFrameConstants::kCallerSPOffset));
// Copy arguments and receiver to the expression stack.
- // r3: number of arguments
// r4: constructor function
// r5: address of last argument (caller sp)
// r6: number of arguments (smi-tagged)
@@ -664,14 +662,15 @@ static void
Generate_JSConstructStubHelper(MacroAssembler* masm,
// sp[2]: new.target (if used)
// sp[2/3]: number of arguments (smi-tagged)
Label loop, no_args;
- __ cmpi(r3, Operand::Zero());
- __ beq(&no_args);
+ __ SmiUntag(r3, r6, SetRC);
+ __ beq(&no_args, cr0);
__ ShiftLeftImm(ip, r3, Operand(kPointerSizeLog2));
+ __ sub(sp, sp, ip);
__ mtctr(r3);
__ bind(&loop);
__ subi(ip, ip, Operand(kPointerSize));
__ LoadPX(r0, MemOperand(r5, ip));
- __ push(r0);
+ __ StorePX(r0, MemOperand(sp, ip));
__ bdnz(&loop);
__ bind(&no_args);
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.