Commit 068503fd authored by Jaideep Bajwa's avatar Jaideep Bajwa Committed by Commit Bot

PPC/S390: Fix to skip processing args if count zero

This issue was exposed with this CL
https://chromium-review.googlesource.com/c/v8/v8/+/654257

R=joransiu@ca.ibm.com, jyan@ca.ibm.com
BUG=
LOG=N

Change-Id: I216bfc8079bf62a58f8e6c20d4ac9d22bc445b51
Reviewed-on: https://chromium-review.googlesource.com/656306Reviewed-by: 's avatarJunliang Yan <jyan@ca.ibm.com>
Commit-Queue: Jaideep Bajwa <bjaideep@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#47907}
parent 335e169b
...@@ -1360,13 +1360,16 @@ static void Generate_StackOverflowCheck(MacroAssembler* masm, Register num_args, ...@@ -1360,13 +1360,16 @@ static void Generate_StackOverflowCheck(MacroAssembler* masm, Register num_args,
static void Generate_InterpreterPushArgs(MacroAssembler* masm, static void Generate_InterpreterPushArgs(MacroAssembler* masm,
Register num_args, Register index, Register num_args, Register index,
Register count, Register scratch) { Register count, Register scratch) {
Label loop; Label loop, skip;
__ cmpi(count, Operand::Zero());
__ beq(&skip);
__ addi(index, index, Operand(kPointerSize)); // Bias up for LoadPU __ addi(index, index, Operand(kPointerSize)); // Bias up for LoadPU
__ mtctr(count); __ mtctr(count);
__ bind(&loop); __ bind(&loop);
__ LoadPU(scratch, MemOperand(index, -kPointerSize)); __ LoadPU(scratch, MemOperand(index, -kPointerSize));
__ push(scratch); __ push(scratch);
__ bdnz(&loop); __ bdnz(&loop);
__ bind(&skip);
} }
// static // static
......
...@@ -1356,7 +1356,9 @@ static void Generate_StackOverflowCheck(MacroAssembler* masm, Register num_args, ...@@ -1356,7 +1356,9 @@ static void Generate_StackOverflowCheck(MacroAssembler* masm, Register num_args,
static void Generate_InterpreterPushArgs(MacroAssembler* masm, static void Generate_InterpreterPushArgs(MacroAssembler* masm,
Register num_args, Register index, Register num_args, Register index,
Register count, Register scratch) { Register count, Register scratch) {
Label loop; Label loop, skip;
__ CmpP(count, Operand::Zero());
__ beq(&skip);
__ AddP(index, index, Operand(kPointerSize)); // Bias up for LoadPU __ AddP(index, index, Operand(kPointerSize)); // Bias up for LoadPU
__ LoadRR(r0, count); __ LoadRR(r0, count);
__ bind(&loop); __ bind(&loop);
...@@ -1365,6 +1367,7 @@ static void Generate_InterpreterPushArgs(MacroAssembler* masm, ...@@ -1365,6 +1367,7 @@ static void Generate_InterpreterPushArgs(MacroAssembler* masm,
__ push(scratch); __ push(scratch);
__ SubP(r0, Operand(1)); __ SubP(r0, Operand(1));
__ bne(&loop); __ bne(&loop);
__ bind(&skip);
} }
// static // static
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment