Commit 538f2bc9 authored by Manos Koukoutos's avatar Manos Koukoutos Committed by V8 LUCI CQ

[wasm-gc][cleanup] Remove wasm signature from CallDescriptor

This field is no longer used, as the functionality it supported has been
subsumed by wasm-gc typed-based optimizations.

Bug: v8:7748
Change-Id: I970514bb29e5f91bb5610cafde60ec3dbcfb07aa
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3705376
Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
Reviewed-by: 's avatarMaya Lekova <mslekova@chromium.org>
Cr-Commit-Position: refs/heads/main@{#81244}
parent 69aeefe2
...@@ -538,9 +538,6 @@ CallDescriptor* Linkage::GetStubCallDescriptor( ...@@ -538,9 +538,6 @@ CallDescriptor* Linkage::GetStubCallDescriptor(
CallDescriptor::kCanUseRoots | flags, // flags CallDescriptor::kCanUseRoots | flags, // flags
descriptor.DebugName(), // debug name descriptor.DebugName(), // debug name
descriptor.GetStackArgumentOrder(), // stack order descriptor.GetStackArgumentOrder(), // stack order
#if V8_ENABLE_WEBASSEMBLY
nullptr, // wasm function signature
#endif
allocatable_registers); allocatable_registers);
} }
......
...@@ -265,9 +265,6 @@ class V8_EXPORT_PRIVATE CallDescriptor final ...@@ -265,9 +265,6 @@ class V8_EXPORT_PRIVATE CallDescriptor final
DoubleRegList callee_saved_fp_registers, Flags flags, DoubleRegList callee_saved_fp_registers, Flags flags,
const char* debug_name = "", const char* debug_name = "",
StackArgumentOrder stack_order = StackArgumentOrder::kDefault, StackArgumentOrder stack_order = StackArgumentOrder::kDefault,
#if V8_ENABLE_WEBASSEMBLY
const wasm::FunctionSig* wasm_sig = nullptr,
#endif
const RegList allocatable_registers = {}, const RegList allocatable_registers = {},
size_t return_slot_count = 0) size_t return_slot_count = 0)
: kind_(kind), : kind_(kind),
...@@ -282,11 +279,7 @@ class V8_EXPORT_PRIVATE CallDescriptor final ...@@ -282,11 +279,7 @@ class V8_EXPORT_PRIVATE CallDescriptor final
allocatable_registers_(allocatable_registers), allocatable_registers_(allocatable_registers),
flags_(flags), flags_(flags),
stack_order_(stack_order), stack_order_(stack_order),
#if V8_ENABLE_WEBASSEMBLY debug_name_(debug_name) {}
wasm_sig_(wasm_sig),
#endif
debug_name_(debug_name) {
}
CallDescriptor(const CallDescriptor&) = delete; CallDescriptor(const CallDescriptor&) = delete;
CallDescriptor& operator=(const CallDescriptor&) = delete; CallDescriptor& operator=(const CallDescriptor&) = delete;
...@@ -309,9 +302,6 @@ class V8_EXPORT_PRIVATE CallDescriptor final ...@@ -309,9 +302,6 @@ class V8_EXPORT_PRIVATE CallDescriptor final
// Returns {true} if this descriptor is a call to a Wasm C API function. // Returns {true} if this descriptor is a call to a Wasm C API function.
bool IsWasmCapiFunction() const { return kind_ == kCallWasmCapiFunction; } bool IsWasmCapiFunction() const { return kind_ == kCallWasmCapiFunction; }
// Returns the wasm signature for this call based on the real parameter types.
const wasm::FunctionSig* wasm_sig() const { return wasm_sig_; }
#endif // V8_ENABLE_WEBASSEMBLY #endif // V8_ENABLE_WEBASSEMBLY
bool RequiresFrameAsIncoming() const { bool RequiresFrameAsIncoming() const {
...@@ -478,9 +468,6 @@ class V8_EXPORT_PRIVATE CallDescriptor final ...@@ -478,9 +468,6 @@ class V8_EXPORT_PRIVATE CallDescriptor final
const RegList allocatable_registers_; const RegList allocatable_registers_;
const Flags flags_; const Flags flags_;
const StackArgumentOrder stack_order_; const StackArgumentOrder stack_order_;
#if V8_ENABLE_WEBASSEMBLY
const wasm::FunctionSig* wasm_sig_;
#endif
const char* const debug_name_; const char* const debug_name_;
mutable base::Optional<size_t> gp_param_count_; mutable base::Optional<size_t> gp_param_count_;
......
This diff is collapsed.
...@@ -343,25 +343,22 @@ class WasmGraphBuilder { ...@@ -343,25 +343,22 @@ class WasmGraphBuilder {
// In all six call-related public functions, we pass a signature based on the // In all six call-related public functions, we pass a signature based on the
// real arguments for this call. This signature gets stored in the Call node // real arguments for this call. This signature gets stored in the Call node
// and will later help us generate better code if this call gets inlined. // and will later help us generate better code if this call gets inlined.
Node* CallDirect(uint32_t index, wasm::FunctionSig* real_sig, Node* CallDirect(uint32_t index, base::Vector<Node*> args,
base::Vector<Node*> args, base::Vector<Node*> rets, base::Vector<Node*> rets, wasm::WasmCodePosition position);
wasm::WasmCodePosition position);
Node* CallIndirect(uint32_t table_index, uint32_t sig_index, Node* CallIndirect(uint32_t table_index, uint32_t sig_index,
wasm::FunctionSig* real_sig, base::Vector<Node*> args, base::Vector<Node*> args, base::Vector<Node*> rets,
base::Vector<Node*> rets, wasm::WasmCodePosition position); wasm::WasmCodePosition position);
Node* CallRef(const wasm::FunctionSig* real_sig, base::Vector<Node*> args, Node* CallRef(const wasm::FunctionSig* sig, base::Vector<Node*> args,
base::Vector<Node*> rets, CheckForNull null_check, base::Vector<Node*> rets, CheckForNull null_check,
wasm::WasmCodePosition position); wasm::WasmCodePosition position);
Node* ReturnCall(uint32_t index, const wasm::FunctionSig* real_sig, Node* ReturnCall(uint32_t index, base::Vector<Node*> args,
base::Vector<Node*> args, wasm::WasmCodePosition position); wasm::WasmCodePosition position);
Node* ReturnCallIndirect(uint32_t table_index, uint32_t sig_index, Node* ReturnCallIndirect(uint32_t table_index, uint32_t sig_index,
wasm::FunctionSig* real_sig,
base::Vector<Node*> args, base::Vector<Node*> args,
wasm::WasmCodePosition position); wasm::WasmCodePosition position);
Node* ReturnCallRef(const wasm::FunctionSig* real_sig, Node* ReturnCallRef(const wasm::FunctionSig* sig, base::Vector<Node*> args,
base::Vector<Node*> args, CheckForNull null_check, CheckForNull null_check, wasm::WasmCodePosition position);
wasm::WasmCodePosition position);
void CompareToInternalFunctionAtIndex(Node* func_ref, uint32_t function_index, void CompareToInternalFunctionAtIndex(Node* func_ref, uint32_t function_index,
Node** success_control, Node** success_control,
...@@ -589,9 +586,6 @@ class WasmGraphBuilder { ...@@ -589,9 +586,6 @@ class WasmGraphBuilder {
void RemoveBytecodePositionDecorator(); void RemoveBytecodePositionDecorator();
static const wasm::FunctionSig* Int64LoweredSig(Zone* zone,
const wasm::FunctionSig* sig);
void StoreCallCount(Node* call, int count); void StoreCallCount(Node* call, int count);
void ReserveCallCounts(size_t num_call_instructions); void ReserveCallCounts(size_t num_call_instructions);
...@@ -647,8 +641,7 @@ class WasmGraphBuilder { ...@@ -647,8 +641,7 @@ class WasmGraphBuilder {
Node** ift_sig_ids, Node** ift_targets, Node** ift_sig_ids, Node** ift_targets,
Node** ift_instances); Node** ift_instances);
Node* BuildIndirectCall(uint32_t table_index, uint32_t sig_index, Node* BuildIndirectCall(uint32_t table_index, uint32_t sig_index,
wasm::FunctionSig* real_sig, base::Vector<Node*> args, base::Vector<Node*> args, base::Vector<Node*> rets,
base::Vector<Node*> rets,
wasm::WasmCodePosition position, wasm::WasmCodePosition position,
IsReturnCall continuation); IsReturnCall continuation);
Node* BuildWasmCall(const wasm::FunctionSig* sig, base::Vector<Node*> args, Node* BuildWasmCall(const wasm::FunctionSig* sig, base::Vector<Node*> args,
...@@ -666,9 +659,9 @@ class WasmGraphBuilder { ...@@ -666,9 +659,9 @@ class WasmGraphBuilder {
base::Vector<Node*> rets, base::Vector<Node*> rets,
wasm::WasmCodePosition position, Node* func_index, wasm::WasmCodePosition position, Node* func_index,
IsReturnCall continuation); IsReturnCall continuation);
Node* BuildCallRef(const wasm::FunctionSig* real_sig, Node* BuildCallRef(const wasm::FunctionSig* sig, base::Vector<Node*> args,
base::Vector<Node*> args, base::Vector<Node*> rets, base::Vector<Node*> rets, CheckForNull null_check,
CheckForNull null_check, IsReturnCall continuation, IsReturnCall continuation,
wasm::WasmCodePosition position); wasm::WasmCodePosition position);
Node* BuildF32CopySign(Node* left, Node* right); Node* BuildF32CopySign(Node* left, Node* right);
......
...@@ -1903,18 +1903,6 @@ class WasmGraphBuildingInterface { ...@@ -1903,18 +1903,6 @@ class WasmGraphBuildingInterface {
const Value args[], Value returns[]) { const Value args[], Value returns[]) {
size_t param_count = sig->parameter_count(); size_t param_count = sig->parameter_count();
size_t return_count = sig->return_count(); size_t return_count = sig->return_count();
// Construct a function signature based on the real function parameters.
FunctionSig::Builder real_sig_builder(builder_->graph_zone(), return_count,
param_count);
for (size_t i = 0; i < param_count; i++) {
real_sig_builder.AddParam(args[i].type);
}
for (size_t i = 0; i < return_count; i++) {
real_sig_builder.AddReturn(sig->GetReturn(i));
}
FunctionSig* real_sig = real_sig_builder.Build();
NodeVector arg_nodes(param_count + 1); NodeVector arg_nodes(param_count + 1);
base::SmallVector<TFNode*, 1> return_nodes(return_count); base::SmallVector<TFNode*, 1> return_nodes(return_count);
arg_nodes[0] = (call_info.call_mode() == CallInfo::kCallDirect) arg_nodes[0] = (call_info.call_mode() == CallInfo::kCallDirect)
...@@ -1929,12 +1917,12 @@ class WasmGraphBuildingInterface { ...@@ -1929,12 +1917,12 @@ class WasmGraphBuildingInterface {
CheckForException( CheckForException(
decoder, builder_->CallIndirect( decoder, builder_->CallIndirect(
call_info.table_index(), call_info.sig_index(), call_info.table_index(), call_info.sig_index(),
real_sig, base::VectorOf(arg_nodes), base::VectorOf(arg_nodes),
base::VectorOf(return_nodes), decoder->position())); base::VectorOf(return_nodes), decoder->position()));
break; break;
case CallInfo::kCallDirect: { case CallInfo::kCallDirect: {
TFNode* call = builder_->CallDirect( TFNode* call = builder_->CallDirect(
call_info.callee_index(), real_sig, base::VectorOf(arg_nodes), call_info.callee_index(), base::VectorOf(arg_nodes),
base::VectorOf(return_nodes), decoder->position()); base::VectorOf(return_nodes), decoder->position());
builder_->StoreCallCount(call, call_info.call_count()); builder_->StoreCallCount(call, call_info.call_count());
CheckForException(decoder, call); CheckForException(decoder, call);
...@@ -1943,7 +1931,7 @@ class WasmGraphBuildingInterface { ...@@ -1943,7 +1931,7 @@ class WasmGraphBuildingInterface {
case CallInfo::kCallRef: case CallInfo::kCallRef:
CheckForException( CheckForException(
decoder, decoder,
builder_->CallRef(real_sig, base::VectorOf(arg_nodes), builder_->CallRef(sig, base::VectorOf(arg_nodes),
base::VectorOf(return_nodes), base::VectorOf(return_nodes),
call_info.null_check(), decoder->position())); call_info.null_check(), decoder->position()));
break; break;
...@@ -1962,17 +1950,6 @@ class WasmGraphBuildingInterface { ...@@ -1962,17 +1950,6 @@ class WasmGraphBuildingInterface {
const FunctionSig* sig, const Value args[]) { const FunctionSig* sig, const Value args[]) {
size_t arg_count = sig->parameter_count(); size_t arg_count = sig->parameter_count();
// Construct a function signature based on the real function parameters.
FunctionSig::Builder real_sig_builder(builder_->graph_zone(),
sig->return_count(), arg_count);
for (size_t i = 0; i < arg_count; i++) {
real_sig_builder.AddParam(args[i].type);
}
for (size_t i = 0; i < sig->return_count(); i++) {
real_sig_builder.AddReturn(sig->GetReturn(i));
}
FunctionSig* real_sig = real_sig_builder.Build();
ValueVector arg_values(arg_count + 1); ValueVector arg_values(arg_count + 1);
if (call_info.call_mode() == CallInfo::kCallDirect) { if (call_info.call_mode() == CallInfo::kCallDirect) {
arg_values[0].node = nullptr; arg_values[0].node = nullptr;
...@@ -1996,18 +1973,18 @@ class WasmGraphBuildingInterface { ...@@ -1996,18 +1973,18 @@ class WasmGraphBuildingInterface {
switch (call_info.call_mode()) { switch (call_info.call_mode()) {
case CallInfo::kCallIndirect: case CallInfo::kCallIndirect:
builder_->ReturnCallIndirect( builder_->ReturnCallIndirect(
call_info.table_index(), call_info.sig_index(), real_sig, call_info.table_index(), call_info.sig_index(),
base::VectorOf(arg_nodes), decoder->position()); base::VectorOf(arg_nodes), decoder->position());
break; break;
case CallInfo::kCallDirect: { case CallInfo::kCallDirect: {
TFNode* call = builder_->ReturnCall(call_info.callee_index(), real_sig, TFNode* call = builder_->ReturnCall(call_info.callee_index(),
base::VectorOf(arg_nodes), base::VectorOf(arg_nodes),
decoder->position()); decoder->position());
builder_->StoreCallCount(call, call_info.call_count()); builder_->StoreCallCount(call, call_info.call_count());
break; break;
} }
case CallInfo::kCallRef: case CallInfo::kCallRef:
builder_->ReturnCallRef(real_sig, base::VectorOf(arg_nodes), builder_->ReturnCallRef(sig, base::VectorOf(arg_nodes),
call_info.null_check(), decoder->position()); call_info.null_check(), decoder->position());
break; break;
} }
......
...@@ -42,15 +42,12 @@ class LinkageTailCall : public TestWithZone { ...@@ -42,15 +42,12 @@ class LinkageTailCall : public TestWithZone {
LinkageLocation::ForAnyRegister(MachineType::Pointer()), LinkageLocation::ForAnyRegister(MachineType::Pointer()),
locations, // location_sig locations, // location_sig
stack_arguments, stack_arguments,
Operator::kNoProperties, // properties Operator::kNoProperties, // properties
kNoCalleeSaved, // callee-saved kNoCalleeSaved, // callee-saved
kNoCalleeSavedFp, // callee-saved fp kNoCalleeSavedFp, // callee-saved fp
CallDescriptor::kNoFlags, // flags, CallDescriptor::kNoFlags, // flags,
"", StackArgumentOrder::kDefault, "", StackArgumentOrder::kDefault, // --
#if V8_ENABLE_WEBASSEMBLY RegList{}, // allocatable_registers
nullptr, // wasm function sig
#endif
RegList{}, // allocatable_registers
stack_returns); stack_returns);
} }
......
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