Commit 9d77a8af authored by Milad Farazmand's avatar Milad Farazmand Committed by Commit Bot

PPC/s390: [codegen] Removed ParameterCount class

Port 1e696896

Original Commit Message:

    It was used only with Register inputs, so we can replace its uses with
    the Registers themselves.

R=solanes@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=
LOG=N

Change-Id: I6b325ccefd226c96de45a74068b1d02611a846cb
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1892195Reviewed-by: 's avatarJunliang Yan <jyan@ca.ibm.com>
Commit-Queue: Milad Farazmand <miladfar@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#64677}
parent a3dbc638
...@@ -1152,36 +1152,25 @@ void TurboAssembler::MovFromFloatParameter(const DoubleRegister dst) { ...@@ -1152,36 +1152,25 @@ void TurboAssembler::MovFromFloatParameter(const DoubleRegister dst) {
Move(dst, d1); Move(dst, d1);
} }
void TurboAssembler::PrepareForTailCall(const ParameterCount& callee_args_count, void TurboAssembler::PrepareForTailCall(Register callee_args_count,
Register caller_args_count_reg, Register caller_args_count,
Register scratch0, Register scratch1) { Register scratch0, Register scratch1) {
#if DEBUG DCHECK(!AreAliased(callee_args_count, caller_args_count, scratch0, scratch1));
if (callee_args_count.is_reg()) {
DCHECK(!AreAliased(callee_args_count.reg(), caller_args_count_reg, scratch0,
scratch1));
} else {
DCHECK(!AreAliased(caller_args_count_reg, scratch0, scratch1));
}
#endif
// Calculate the end of destination area where we will put the arguments // Calculate the end of destination area where we will put the arguments
// after we drop current frame. We add kPointerSize to count the receiver // after we drop current frame. We add kPointerSize to count the receiver
// argument which is not included into formal parameters count. // argument which is not included into formal parameters count.
Register dst_reg = scratch0; Register dst_reg = scratch0;
ShiftLeftImm(dst_reg, caller_args_count_reg, Operand(kPointerSizeLog2)); ShiftLeftImm(dst_reg, caller_args_count, Operand(kPointerSizeLog2));
add(dst_reg, fp, dst_reg); add(dst_reg, fp, dst_reg);
addi(dst_reg, dst_reg, addi(dst_reg, dst_reg,
Operand(StandardFrameConstants::kCallerSPOffset + kPointerSize)); Operand(StandardFrameConstants::kCallerSPOffset + kPointerSize));
Register src_reg = caller_args_count_reg; Register src_reg = caller_args_count;
// Calculate the end of source area. +kPointerSize is for the receiver. // Calculate the end of source area. +kPointerSize is for the receiver.
if (callee_args_count.is_reg()) { ShiftLeftImm(src_reg, callee_args_count, Operand(kPointerSizeLog2));
ShiftLeftImm(src_reg, callee_args_count.reg(), Operand(kPointerSizeLog2)); add(src_reg, sp, src_reg);
add(src_reg, sp, src_reg); addi(src_reg, src_reg, Operand(kPointerSize));
addi(src_reg, src_reg, Operand(kPointerSize));
} else {
Add(src_reg, sp, (callee_args_count.immediate() + 1) * kPointerSize, r0);
}
if (FLAG_debug_code) { if (FLAG_debug_code) {
cmpl(src_reg, dst_reg); cmpl(src_reg, dst_reg);
...@@ -1199,11 +1188,7 @@ void TurboAssembler::PrepareForTailCall(const ParameterCount& callee_args_count, ...@@ -1199,11 +1188,7 @@ void TurboAssembler::PrepareForTailCall(const ParameterCount& callee_args_count,
// so they must be pre-decremented in the loop. // so they must be pre-decremented in the loop.
Register tmp_reg = scratch1; Register tmp_reg = scratch1;
Label loop; Label loop;
if (callee_args_count.is_reg()) { addi(tmp_reg, callee_args_count, Operand(1)); // +1 for receiver
addi(tmp_reg, callee_args_count.reg(), Operand(1)); // +1 for receiver
} else {
mov(tmp_reg, Operand(callee_args_count.immediate() + 1));
}
mtctr(tmp_reg); mtctr(tmp_reg);
bind(&loop); bind(&loop);
LoadPU(tmp_reg, MemOperand(src_reg, -kPointerSize)); LoadPU(tmp_reg, MemOperand(src_reg, -kPointerSize));
......
...@@ -333,8 +333,8 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { ...@@ -333,8 +333,8 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase {
Register scratch); Register scratch);
void PrepareCallCFunction(int num_reg_arguments, Register scratch); void PrepareCallCFunction(int num_reg_arguments, Register scratch);
void PrepareForTailCall(const ParameterCount& callee_args_count, void PrepareForTailCall(Register callee_args_count,
Register caller_args_count_reg, Register scratch0, Register caller_args_count, Register scratch0,
Register scratch1); Register scratch1);
// There are two ways of passing double arguments on ARM, depending on // There are two ways of passing double arguments on ARM, depending on
...@@ -743,8 +743,8 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler { ...@@ -743,8 +743,8 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// Removes current frame and its arguments from the stack preserving // Removes current frame and its arguments from the stack preserving
// the arguments and a return address pushed to the stack for the next call. // the arguments and a return address pushed to the stack for the next call.
// Both |callee_args_count| and |caller_args_count_reg| do not include // Both |callee_args_count| and |caller_args_countg| do not include
// receiver. |callee_args_count| is not modified, |caller_args_count_reg| // receiver. |callee_args_count| is not modified. |caller_args_count|
// is trashed. // is trashed.
// Invoke the JavaScript function code by either calling or jumping. // Invoke the JavaScript function code by either calling or jumping.
......
...@@ -1201,39 +1201,25 @@ void TurboAssembler::MovFromFloatParameter(const DoubleRegister dst) { ...@@ -1201,39 +1201,25 @@ void TurboAssembler::MovFromFloatParameter(const DoubleRegister dst) {
Move(dst, d0); Move(dst, d0);
} }
void TurboAssembler::PrepareForTailCall(const ParameterCount& callee_args_count, void TurboAssembler::PrepareForTailCall(Register callee_args_count,
Register caller_args_count_reg, Register caller_args_count,
Register scratch0, Register scratch1) { Register scratch0, Register scratch1) {
#if DEBUG DCHECK(!AreAliased(callee_args_count, caller_args_count, scratch0, scratch1));
if (callee_args_count.is_reg()) {
DCHECK(!AreAliased(callee_args_count.reg(), caller_args_count_reg, scratch0,
scratch1));
} else {
DCHECK(!AreAliased(caller_args_count_reg, scratch0, scratch1));
}
#endif
// Calculate the end of destination area where we will put the arguments // Calculate the end of destination area where we will put the arguments
// after we drop current frame. We AddP kSystemPointerSize to count the // after we drop current frame. We AddP kSystemPointerSize to count the
// receiver argument which is not included into formal parameters count. // receiver argument which is not included into formal parameters count.
Register dst_reg = scratch0; Register dst_reg = scratch0;
ShiftLeftP(dst_reg, caller_args_count_reg, Operand(kSystemPointerSizeLog2)); ShiftLeftP(dst_reg, caller_args_count, Operand(kSystemPointerSizeLog2));
AddP(dst_reg, fp, dst_reg); AddP(dst_reg, fp, dst_reg);
AddP(dst_reg, dst_reg, AddP(dst_reg, dst_reg,
Operand(StandardFrameConstants::kCallerSPOffset + kSystemPointerSize)); Operand(StandardFrameConstants::kCallerSPOffset + kSystemPointerSize));
Register src_reg = caller_args_count_reg; Register src_reg = caller_args_count;
// Calculate the end of source area. +kSystemPointerSize is for the receiver. // Calculate the end of source area. +kSystemPointerSize is for the receiver.
if (callee_args_count.is_reg()) { ShiftLeftP(src_reg, callee_args_count, Operand(kSystemPointerSizeLog2));
ShiftLeftP(src_reg, callee_args_count.reg(), AddP(src_reg, sp, src_reg);
Operand(kSystemPointerSizeLog2)); AddP(src_reg, src_reg, Operand(kSystemPointerSize));
AddP(src_reg, sp, src_reg);
AddP(src_reg, src_reg, Operand(kSystemPointerSize));
} else {
mov(src_reg,
Operand((callee_args_count.immediate() + 1) * kSystemPointerSize));
AddP(src_reg, src_reg, sp);
}
if (FLAG_debug_code) { if (FLAG_debug_code) {
CmpLogicalP(src_reg, dst_reg); CmpLogicalP(src_reg, dst_reg);
...@@ -1251,11 +1237,7 @@ void TurboAssembler::PrepareForTailCall(const ParameterCount& callee_args_count, ...@@ -1251,11 +1237,7 @@ void TurboAssembler::PrepareForTailCall(const ParameterCount& callee_args_count,
// so they must be pre-decremented in the loop. // so they must be pre-decremented in the loop.
Register tmp_reg = scratch1; Register tmp_reg = scratch1;
Label loop; Label loop;
if (callee_args_count.is_reg()) { AddP(tmp_reg, callee_args_count, Operand(1)); // +1 for receiver
AddP(tmp_reg, callee_args_count.reg(), Operand(1)); // +1 for receiver
} else {
mov(tmp_reg, Operand(callee_args_count.immediate() + 1));
}
LoadRR(r1, tmp_reg); LoadRR(r1, tmp_reg);
bind(&loop); bind(&loop);
LoadP(tmp_reg, MemOperand(src_reg, -kSystemPointerSize)); LoadP(tmp_reg, MemOperand(src_reg, -kSystemPointerSize));
......
...@@ -804,8 +804,8 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase { ...@@ -804,8 +804,8 @@ class V8_EXPORT_PRIVATE TurboAssembler : public TurboAssemblerBase {
#endif #endif
} }
void PrepareForTailCall(const ParameterCount& callee_args_count, void PrepareForTailCall(Register callee_args_count,
Register caller_args_count_reg, Register scratch0, Register caller_args_count, Register scratch0,
Register scratch1); Register scratch1);
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
...@@ -1119,8 +1119,8 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler { ...@@ -1119,8 +1119,8 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
// Removes current frame and its arguments from the stack preserving // Removes current frame and its arguments from the stack preserving
// the arguments and a return address pushed to the stack for the next call. // the arguments and a return address pushed to the stack for the next call.
// Both |callee_args_count| and |caller_args_count_reg| do not include // Both |callee_args_count| and |caller_args_count| do not include
// receiver. |callee_args_count| is not modified, |caller_args_count_reg| // receiver. |callee_args_count| is not modified. |caller_args_count|
// is trashed. // is trashed.
// Invoke the JavaScript function code by either calling or jumping. // Invoke the JavaScript function code by either calling or jumping.
......
...@@ -704,9 +704,7 @@ void CodeGenerator::AssemblePopArgumentsAdaptorFrame(Register args_reg, ...@@ -704,9 +704,7 @@ void CodeGenerator::AssemblePopArgumentsAdaptorFrame(Register args_reg,
MemOperand(fp, ArgumentsAdaptorFrameConstants::kLengthOffset)); MemOperand(fp, ArgumentsAdaptorFrameConstants::kLengthOffset));
__ SmiUntag(caller_args_count_reg); __ SmiUntag(caller_args_count_reg);
ParameterCount callee_args_count(args_reg); __ PrepareForTailCall(args_reg, caller_args_count_reg, scratch2, scratch3);
__ PrepareForTailCall(callee_args_count, caller_args_count_reg, scratch2,
scratch3);
__ bind(&done); __ bind(&done);
} }
......
...@@ -1193,9 +1193,7 @@ void CodeGenerator::AssemblePopArgumentsAdaptorFrame(Register args_reg, ...@@ -1193,9 +1193,7 @@ void CodeGenerator::AssemblePopArgumentsAdaptorFrame(Register args_reg,
MemOperand(fp, ArgumentsAdaptorFrameConstants::kLengthOffset)); MemOperand(fp, ArgumentsAdaptorFrameConstants::kLengthOffset));
__ SmiUntag(caller_args_count_reg); __ SmiUntag(caller_args_count_reg);
ParameterCount callee_args_count(args_reg); __ PrepareForTailCall(args_reg, caller_args_count_reg, scratch2, scratch3);
__ PrepareForTailCall(callee_args_count, caller_args_count_reg, scratch2,
scratch3);
__ bind(&done); __ bind(&done);
} }
......
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