PPC/s390: [centry] Remove the unused SaveFPRegsMode parameter
Port 605e46479a
Original Commit Message:
The SaveFPRegsMode::kSave specializations of CEntry were unused.
Remove this parameter to eliminate dead code.
R=jgruber@chromium.org, joransiu@ca.ibm.com, junyan@redhat.com, midawson@redhat.com
BUG=
LOG=N
Change-Id: I114dbd0045e891085182e5af79ff1f1201b48765
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4116857
Commit-Queue: Milad Farazmand <mfarazma@redhat.com>
Reviewed-by: Vasili Skurydzin <vasili.skurydzin@ibm.com>
Cr-Commit-Position: refs/heads/main@{#84965}
This commit is contained in:
parent
f51e0bb1db
commit
70bdadce8f
@ -2949,8 +2949,7 @@ void Builtins::Generate_WasmOnStackReplace(MacroAssembler* masm) {
|
||||
#endif // V8_ENABLE_WEBASSEMBLY
|
||||
|
||||
void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
|
||||
SaveFPRegsMode save_doubles, ArgvMode argv_mode,
|
||||
bool builtin_exit_frame) {
|
||||
ArgvMode argv_mode, bool builtin_exit_frame) {
|
||||
// Called from JavaScript; parameters are on stack as if calling JS function.
|
||||
// r3: number of arguments including receiver
|
||||
// r4: pointer to builtin function
|
||||
@ -2986,9 +2985,9 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
|
||||
arg_stack_space += result_size;
|
||||
}
|
||||
|
||||
__ EnterExitFrame(
|
||||
save_doubles == SaveFPRegsMode::kSave, arg_stack_space,
|
||||
builtin_exit_frame ? StackFrame::BUILTIN_EXIT : StackFrame::EXIT);
|
||||
__ EnterExitFrame(arg_stack_space, builtin_exit_frame
|
||||
? StackFrame::BUILTIN_EXIT
|
||||
: StackFrame::EXIT);
|
||||
|
||||
// Store a copy of argc in callee-saved registers for later.
|
||||
__ mr(r14, r3);
|
||||
@ -3053,7 +3052,7 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
|
||||
? no_reg
|
||||
// r14: still holds argc (callee-saved).
|
||||
: r14;
|
||||
__ LeaveExitFrame(save_doubles == SaveFPRegsMode::kSave, argc);
|
||||
__ LeaveExitFrame(argc, false);
|
||||
__ blr();
|
||||
|
||||
// Handling of exception.
|
||||
@ -3328,7 +3327,7 @@ static void CallApiFunctionAndReturn(MacroAssembler* masm,
|
||||
} else {
|
||||
__ mov(r14, Operand(stack_space));
|
||||
}
|
||||
__ LeaveExitFrame(false, r14, stack_space_operand != nullptr);
|
||||
__ LeaveExitFrame(r14, stack_space_operand != nullptr);
|
||||
|
||||
// Check if the function scheduled an exception.
|
||||
__ LoadRoot(r14, RootIndex::kTheHoleValue);
|
||||
@ -3438,10 +3437,9 @@ void Builtins::Generate_CallApiCallback(MacroAssembler* masm) {
|
||||
// [1-3] FunctionCallbackInfo
|
||||
// [4] number of bytes to drop from the stack after returning
|
||||
static constexpr int kApiStackSpace = 5;
|
||||
static constexpr bool kDontSaveDoubles = false;
|
||||
|
||||
FrameScope frame_scope(masm, StackFrame::MANUAL);
|
||||
__ EnterExitFrame(kDontSaveDoubles, kApiStackSpace);
|
||||
__ EnterExitFrame(kApiStackSpace, StackFrame::EXIT);
|
||||
|
||||
// FunctionCallbackInfo::implicit_args_ (points at kHolder as set up above).
|
||||
// Arguments are after the return address (pushed by EnterExitFrame()).
|
||||
@ -3557,7 +3555,7 @@ void Builtins::Generate_CallApiGetter(MacroAssembler* masm) {
|
||||
}
|
||||
|
||||
FrameScope frame_scope(masm, StackFrame::MANUAL);
|
||||
__ EnterExitFrame(false, apiStackSpace);
|
||||
__ EnterExitFrame(apiStackSpace, StackFrame::EXIT);
|
||||
|
||||
if (!ABI_PASSES_HANDLES_IN_REGS) {
|
||||
// pass 1st arg by reference
|
||||
|
@ -2942,8 +2942,7 @@ void Builtins::Generate_WasmOnStackReplace(MacroAssembler* masm) {
|
||||
#endif // V8_ENABLE_WEBASSEMBLY
|
||||
|
||||
void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
|
||||
SaveFPRegsMode save_doubles, ArgvMode argv_mode,
|
||||
bool builtin_exit_frame) {
|
||||
ArgvMode argv_mode, bool builtin_exit_frame) {
|
||||
// Called from JavaScript; parameters are on stack as if calling JS function.
|
||||
// r2: number of arguments including receiver
|
||||
// r3: pointer to builtin function
|
||||
@ -2983,9 +2982,9 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
|
||||
arg_stack_space += 2;
|
||||
#endif
|
||||
|
||||
__ EnterExitFrame(
|
||||
save_doubles == SaveFPRegsMode::kSave, arg_stack_space,
|
||||
builtin_exit_frame ? StackFrame::BUILTIN_EXIT : StackFrame::EXIT);
|
||||
__ EnterExitFrame(arg_stack_space, builtin_exit_frame
|
||||
? StackFrame::BUILTIN_EXIT
|
||||
: StackFrame::EXIT);
|
||||
|
||||
// Store a copy of argc, argv in callee-saved registers for later.
|
||||
__ mov(r6, r2);
|
||||
@ -3052,7 +3051,7 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size,
|
||||
? no_reg
|
||||
// r6: still holds argc (callee-saved).
|
||||
: r6;
|
||||
__ LeaveExitFrame(save_doubles == SaveFPRegsMode::kSave, argc);
|
||||
__ LeaveExitFrame(argc, false);
|
||||
__ b(r14);
|
||||
|
||||
// Handling of exception.
|
||||
@ -3313,7 +3312,7 @@ static void CallApiFunctionAndReturn(MacroAssembler* masm,
|
||||
DCHECK_EQ(stack_space, 0);
|
||||
__ LoadU64(r6, *stack_space_operand);
|
||||
}
|
||||
__ LeaveExitFrame(false, r6, stack_space_operand != nullptr);
|
||||
__ LeaveExitFrame(r6, stack_space_operand != nullptr);
|
||||
|
||||
// Check if the function scheduled an exception.
|
||||
__ Move(r7, ExternalReference::scheduled_exception_address(isolate));
|
||||
@ -3422,10 +3421,9 @@ void Builtins::Generate_CallApiCallback(MacroAssembler* masm) {
|
||||
// [1-3] FunctionCallbackInfo
|
||||
// [4] number of bytes to drop from the stack after returning
|
||||
static constexpr int kApiStackSpace = 5;
|
||||
static constexpr bool kDontSaveDoubles = false;
|
||||
|
||||
FrameScope frame_scope(masm, StackFrame::MANUAL);
|
||||
__ EnterExitFrame(kDontSaveDoubles, kApiStackSpace);
|
||||
__ EnterExitFrame(kApiStackSpace, StackFrame::EXIT);
|
||||
|
||||
// FunctionCallbackInfo::implicit_args_ (points at kHolder as set up above).
|
||||
// Arguments are after the return address (pushed by EnterExitFrame()).
|
||||
@ -3540,7 +3538,7 @@ void Builtins::Generate_CallApiGetter(MacroAssembler* masm) {
|
||||
}
|
||||
|
||||
FrameScope frame_scope(masm, StackFrame::MANUAL);
|
||||
__ EnterExitFrame(false, apiStackSpace);
|
||||
__ EnterExitFrame(apiStackSpace, StackFrame::EXIT);
|
||||
|
||||
if (!ABI_PASSES_HANDLES_IN_REGS) {
|
||||
// pass 1st arg by reference
|
||||
|
@ -1349,7 +1349,7 @@ int TurboAssembler::LeaveFrame(StackFrame::Type type, int stack_adjustment) {
|
||||
// in the fp register (r31)
|
||||
// Then - we buy a new frame
|
||||
|
||||
void MacroAssembler::EnterExitFrame(bool save_doubles, int stack_space,
|
||||
void MacroAssembler::EnterExitFrame(int stack_space,
|
||||
StackFrame::Type frame_type) {
|
||||
DCHECK(frame_type == StackFrame::EXIT ||
|
||||
frame_type == StackFrame::BUILTIN_EXIT);
|
||||
@ -1385,15 +1385,6 @@ void MacroAssembler::EnterExitFrame(bool save_doubles, int stack_space,
|
||||
ExternalReference::Create(IsolateAddressId::kContextAddress, isolate()));
|
||||
StoreU64(cp, MemOperand(r8));
|
||||
|
||||
// Optionally save all volatile double registers.
|
||||
if (save_doubles) {
|
||||
MultiPushDoubles(kCallerSavedDoubles);
|
||||
// Note that d0 will be accessible at
|
||||
// fp - ExitFrameConstants::kFrameSize -
|
||||
// kNumCallerSavedDoubles * kDoubleSize,
|
||||
// since the sp slot and code slot were pushed after the fp.
|
||||
}
|
||||
|
||||
AddS64(sp, sp, Operand(-stack_space * kSystemPointerSize));
|
||||
|
||||
// Allocate and align the frame preparing for calling the runtime
|
||||
@ -1431,18 +1422,9 @@ int TurboAssembler::ActivationFrameAlignment() {
|
||||
#endif
|
||||
}
|
||||
|
||||
void MacroAssembler::LeaveExitFrame(bool save_doubles, Register argument_count,
|
||||
void MacroAssembler::LeaveExitFrame(Register argument_count,
|
||||
bool argument_count_is_length) {
|
||||
ConstantPoolUnavailableScope constant_pool_unavailable(this);
|
||||
// Optionally restore all double registers.
|
||||
if (save_doubles) {
|
||||
// Calculate the stack location of the saved doubles and restore them.
|
||||
const int kNumRegs = kNumCallerSavedDoubles;
|
||||
const int offset =
|
||||
(ExitFrameConstants::kFixedFrameSizeFromFp + kNumRegs * kDoubleSize);
|
||||
AddS64(r6, fp, Operand(-offset), r0);
|
||||
MultiPopDoubles(kCallerSavedDoubles, r6);
|
||||
}
|
||||
|
||||
// Clear top frame.
|
||||
li(r6, Operand::Zero());
|
||||
@ -2168,8 +2150,8 @@ void MacroAssembler::OptimizeCodeOrTailCallOptimizedCodeSlot(
|
||||
TailCallOptimizedCodeSlot(this, optimized_code_entry, r9);
|
||||
}
|
||||
|
||||
void MacroAssembler::CallRuntime(const Runtime::Function* f, int num_arguments,
|
||||
SaveFPRegsMode save_doubles) {
|
||||
void MacroAssembler::CallRuntime(const Runtime::Function* f,
|
||||
int num_arguments) {
|
||||
// All parameters are on the stack. r3 has the return value after call.
|
||||
|
||||
// If the expected number of arguments of the runtime function is
|
||||
@ -2184,10 +2166,9 @@ void MacroAssembler::CallRuntime(const Runtime::Function* f, int num_arguments,
|
||||
mov(r3, Operand(num_arguments));
|
||||
Move(r4, ExternalReference::Create(f));
|
||||
#if V8_TARGET_ARCH_PPC64
|
||||
Handle<Code> code =
|
||||
CodeFactory::CEntry(isolate(), f->result_size, save_doubles);
|
||||
Handle<Code> code = CodeFactory::CEntry(isolate(), f->result_size);
|
||||
#else
|
||||
Handle<Code> code = CodeFactory::CEntry(isolate(), 1, save_doubles);
|
||||
Handle<Code> code = CodeFactory::CEntry(isolate(), 1);
|
||||
#endif
|
||||
Call(code, RelocInfo::CODE_TARGET);
|
||||
}
|
||||
@ -2204,8 +2185,8 @@ void MacroAssembler::TailCallRuntime(Runtime::FunctionId fid) {
|
||||
void MacroAssembler::JumpToExternalReference(const ExternalReference& builtin,
|
||||
bool builtin_exit_frame) {
|
||||
Move(r4, builtin);
|
||||
Handle<Code> code = CodeFactory::CEntry(isolate(), 1, SaveFPRegsMode::kIgnore,
|
||||
ArgvMode::kStack, builtin_exit_frame);
|
||||
Handle<Code> code =
|
||||
CodeFactory::CEntry(isolate(), 1, ArgvMode::kStack, builtin_exit_frame);
|
||||
Jump(code, RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
|
@ -1452,15 +1452,12 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
|
||||
|
||||
// Enter exit frame.
|
||||
// stack_space - extra stack space, used for parameters before call to C.
|
||||
// At least one slot (for the return address) should be provided.
|
||||
void EnterExitFrame(bool save_doubles, int stack_space = 1,
|
||||
StackFrame::Type frame_type = StackFrame::EXIT);
|
||||
void EnterExitFrame(int stack_space, StackFrame::Type frame_type);
|
||||
|
||||
// Leave the current exit frame. Expects the return value in r0.
|
||||
// Expect the number of values, pushed prior to the exit frame, to
|
||||
// remove in a register (or no_reg, if there is nothing to remove).
|
||||
void LeaveExitFrame(bool save_doubles, Register argument_count,
|
||||
bool argument_count_is_length = false);
|
||||
void LeaveExitFrame(Register argument_count, bool argument_count_is_length);
|
||||
|
||||
// Load the global proxy from the current context.
|
||||
void LoadGlobalProxy(Register dst) {
|
||||
@ -1596,24 +1593,17 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
|
||||
void CallJSEntry(Register target);
|
||||
|
||||
// Call a runtime routine.
|
||||
void CallRuntime(const Runtime::Function* f, int num_arguments,
|
||||
SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore);
|
||||
void CallRuntimeSaveDoubles(Runtime::FunctionId fid) {
|
||||
void CallRuntime(const Runtime::Function* f, int num_arguments);
|
||||
|
||||
// Convenience function: Same as above, but takes the fid instead.
|
||||
void CallRuntime(Runtime::FunctionId fid) {
|
||||
const Runtime::Function* function = Runtime::FunctionForId(fid);
|
||||
CallRuntime(function, function->nargs, SaveFPRegsMode::kSave);
|
||||
CallRuntime(function, function->nargs);
|
||||
}
|
||||
|
||||
// Convenience function: Same as above, but takes the fid instead.
|
||||
void CallRuntime(Runtime::FunctionId fid,
|
||||
SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore) {
|
||||
const Runtime::Function* function = Runtime::FunctionForId(fid);
|
||||
CallRuntime(function, function->nargs, save_doubles);
|
||||
}
|
||||
|
||||
// Convenience function: Same as above, but takes the fid instead.
|
||||
void CallRuntime(Runtime::FunctionId fid, int num_arguments,
|
||||
SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore) {
|
||||
CallRuntime(Runtime::FunctionForId(fid), num_arguments, save_doubles);
|
||||
void CallRuntime(Runtime::FunctionId fid, int num_arguments) {
|
||||
CallRuntime(Runtime::FunctionForId(fid), num_arguments);
|
||||
}
|
||||
|
||||
// Convenience function: tail call a runtime routine (jump).
|
||||
|
@ -1542,7 +1542,7 @@ int TurboAssembler::LeaveFrame(StackFrame::Type type, int stack_adjustment) {
|
||||
// gaps
|
||||
// Args
|
||||
// ABIRes <- newSP
|
||||
void MacroAssembler::EnterExitFrame(bool save_doubles, int stack_space,
|
||||
void MacroAssembler::EnterExitFrame(int stack_space,
|
||||
StackFrame::Type frame_type) {
|
||||
DCHECK(frame_type == StackFrame::EXIT ||
|
||||
frame_type == StackFrame::BUILTIN_EXIT);
|
||||
@ -1574,15 +1574,6 @@ void MacroAssembler::EnterExitFrame(bool save_doubles, int stack_space,
|
||||
ExternalReference::Create(IsolateAddressId::kContextAddress, isolate()));
|
||||
StoreU64(cp, MemOperand(r1));
|
||||
|
||||
// Optionally save all volatile double registers.
|
||||
if (save_doubles) {
|
||||
MultiPushDoubles(kCallerSavedDoubles);
|
||||
// Note that d0 will be accessible at
|
||||
// fp - ExitFrameConstants::kFrameSize -
|
||||
// kNumCallerSavedDoubles * kDoubleSize,
|
||||
// since the sp slot and code slot were pushed after the fp.
|
||||
}
|
||||
|
||||
lay(sp, MemOperand(sp, -stack_space * kSystemPointerSize));
|
||||
|
||||
// Allocate and align the frame preparing for calling the runtime
|
||||
@ -1617,17 +1608,8 @@ int TurboAssembler::ActivationFrameAlignment() {
|
||||
#endif
|
||||
}
|
||||
|
||||
void MacroAssembler::LeaveExitFrame(bool save_doubles, Register argument_count,
|
||||
void MacroAssembler::LeaveExitFrame(Register argument_count,
|
||||
bool argument_count_is_length) {
|
||||
// Optionally restore all double registers.
|
||||
if (save_doubles) {
|
||||
// Calculate the stack location of the saved doubles and restore them.
|
||||
const int kNumRegs = kNumCallerSavedDoubles;
|
||||
lay(r5, MemOperand(fp, -(ExitFrameConstants::kFixedFrameSizeFromFp +
|
||||
kNumRegs * kDoubleSize)));
|
||||
MultiPopDoubles(kCallerSavedDoubles, r5);
|
||||
}
|
||||
|
||||
// Clear top frame.
|
||||
Move(ip, ExternalReference::Create(IsolateAddressId::kCEntryFPAddress,
|
||||
isolate()));
|
||||
@ -2163,8 +2145,8 @@ void MacroAssembler::OptimizeCodeOrTailCallOptimizedCodeSlot(
|
||||
TailCallOptimizedCodeSlot(this, optimized_code_entry, r8);
|
||||
}
|
||||
|
||||
void MacroAssembler::CallRuntime(const Runtime::Function* f, int num_arguments,
|
||||
SaveFPRegsMode save_doubles) {
|
||||
void MacroAssembler::CallRuntime(const Runtime::Function* f,
|
||||
int num_arguments) {
|
||||
// All parameters are on the stack. r2 has the return value after call.
|
||||
|
||||
// If the expected number of arguments of the runtime function is
|
||||
@ -2179,10 +2161,9 @@ void MacroAssembler::CallRuntime(const Runtime::Function* f, int num_arguments,
|
||||
mov(r2, Operand(num_arguments));
|
||||
Move(r3, ExternalReference::Create(f));
|
||||
#if V8_TARGET_ARCH_S390X
|
||||
Handle<Code> code =
|
||||
CodeFactory::CEntry(isolate(), f->result_size, save_doubles);
|
||||
Handle<Code> code = CodeFactory::CEntry(isolate(), f->result_size);
|
||||
#else
|
||||
Handle<Code> code = CodeFactory::CEntry(isolate(), 1, save_doubles);
|
||||
Handle<Code> code = CodeFactory::CEntry(isolate(), 1);
|
||||
#endif
|
||||
|
||||
Call(code, RelocInfo::CODE_TARGET);
|
||||
@ -2200,8 +2181,8 @@ void MacroAssembler::TailCallRuntime(Runtime::FunctionId fid) {
|
||||
void MacroAssembler::JumpToExternalReference(const ExternalReference& builtin,
|
||||
bool builtin_exit_frame) {
|
||||
Move(r3, builtin);
|
||||
Handle<Code> code = CodeFactory::CEntry(isolate(), 1, SaveFPRegsMode::kIgnore,
|
||||
ArgvMode::kStack, builtin_exit_frame);
|
||||
Handle<Code> code =
|
||||
CodeFactory::CEntry(isolate(), 1, ArgvMode::kStack, builtin_exit_frame);
|
||||
Jump(code, RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
|
@ -1521,24 +1521,17 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
|
||||
StoreU64(rec, MemOperand(sp, 0));
|
||||
}
|
||||
|
||||
void CallRuntime(const Runtime::Function* f, int num_arguments,
|
||||
SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore);
|
||||
void CallRuntimeSaveDoubles(Runtime::FunctionId fid) {
|
||||
void CallRuntime(const Runtime::Function* f, int num_arguments);
|
||||
|
||||
// Convenience function: Same as above, but takes the fid instead.
|
||||
void CallRuntime(Runtime::FunctionId fid) {
|
||||
const Runtime::Function* function = Runtime::FunctionForId(fid);
|
||||
CallRuntime(function, function->nargs, SaveFPRegsMode::kSave);
|
||||
CallRuntime(function, function->nargs);
|
||||
}
|
||||
|
||||
// Convenience function: Same as above, but takes the fid instead.
|
||||
void CallRuntime(Runtime::FunctionId fid,
|
||||
SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore) {
|
||||
const Runtime::Function* function = Runtime::FunctionForId(fid);
|
||||
CallRuntime(function, function->nargs, save_doubles);
|
||||
}
|
||||
|
||||
// Convenience function: Same as above, but takes the fid instead.
|
||||
void CallRuntime(Runtime::FunctionId fid, int num_arguments,
|
||||
SaveFPRegsMode save_doubles = SaveFPRegsMode::kIgnore) {
|
||||
CallRuntime(Runtime::FunctionForId(fid), num_arguments, save_doubles);
|
||||
void CallRuntime(Runtime::FunctionId fid, int num_arguments) {
|
||||
CallRuntime(Runtime::FunctionForId(fid), num_arguments);
|
||||
}
|
||||
|
||||
// Convenience function: tail call a runtime routine (jump).
|
||||
@ -1686,15 +1679,12 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
|
||||
|
||||
// Enter exit frame.
|
||||
// stack_space - extra stack space, used for parameters before call to C.
|
||||
// At least one slot (for the return address) should be provided.
|
||||
void EnterExitFrame(bool save_doubles, int stack_space = 1,
|
||||
StackFrame::Type frame_type = StackFrame::EXIT);
|
||||
void EnterExitFrame(int stack_space, StackFrame::Type frame_type);
|
||||
|
||||
// Leave the current exit frame. Expects the return value in r0.
|
||||
// Expect the number of values, pushed prior to the exit frame, to
|
||||
// remove in a register (or no_reg, if there is nothing to remove).
|
||||
void LeaveExitFrame(bool save_doubles, Register argument_count,
|
||||
bool argument_count_is_length = false);
|
||||
void LeaveExitFrame(Register argument_count, bool argument_count_is_length);
|
||||
|
||||
// Load the global proxy from the current context.
|
||||
void LoadGlobalProxy(Register dst) {
|
||||
|
Loading…
Reference in New Issue
Block a user