| 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);
|
|
|
|
|