5#ifndef V8_COMPILER_TURBOSHAFT_GROWABLE_STACKS_REDUCER_H_
6#define V8_COMPILER_TURBOSHAFT_GROWABLE_STACKS_REDUCER_H_
27 if (!
__ data()->wasm_module_sig() ||
28 !
v8_flags.experimental_wasm_growable_stacks) {
35#if V8_TARGET_ARCH_32_BIT
44 return Next::ReduceWasmStackCheck(
kind);
53 const int stack_parameter_count = 0;
64 __ RelocatableWasmBuiltinCallTarget(Builtin::kWasmGrowableStackGuard);
68 builtin, {param_slots_size}, ts_stub_call_descriptor,
77 bool spill_caller_frame_slots) {
80 return Next::ReduceReturn(pop_count, return_values,
81 spill_caller_frame_slots);
100 __ ExternalConstant(ExternalReference::wasm_load_old_fp()),
104 ts_ccall_descriptor));
106 GOTO(done,
__ FramePointer());
114 register_return_values.
push_back(return_values[
i]);
119 OpIndex ret_value = return_values[
i];
126 ret_value =
__ BitcastTaggedToWordPtr(ret_value);
128 __ StoreOffHeap(old_fp, ret_value, mem_rep,
131 return Next::ReduceReturn(pop_count,
base::VectorOf(register_return_values),
132 spill_caller_frame_slots);
#define REDUCE(operation)
union v8::internal::@341::BuiltinMetadata::KindSpecificData data
static V8_EXPORT_PRIVATE ExternalReference isolate_address()
auto Returns(ReturnTypes... return_types) const
static constexpr int jslimit_offset()
MachineType GetType() const
bool IsCallerFrameSlot() const
int32_t GetLocation() const
static constexpr MachineType Pointer()
static constexpr int32_t TypeToMarker(Type type)
size_t ReturnSlotCount() const
size_t ParameterSlotCount() const
size_t ReturnCount() const
LinkageLocation GetReturnLocation(size_t index) const
static CallDescriptor * GetSimplifiedCDescriptor(Zone *zone, const MachineSignature *sig, CallDescriptor::Flags flags=CallDescriptor::kNoFlags, Operator::Properties properties=Operator::kNoThrow)
static CallDescriptor * GetStubCallDescriptor(Zone *zone, const CallInterfaceDescriptor &descriptor, int stack_parameter_count, CallDescriptor::Flags flags, Operator::Properties properties=Operator::kNoProperties, StubCallMode stub_mode=StubCallMode::kCallCodeObject)
CallDescriptor * call_descriptor_
V< None > REDUCE WasmStackCheck(WasmStackCheckOp::Kind kind)
OpIndex REDUCE Return(V< Word32 > pop_count, base::Vector< const OpIndex > return_values, bool spill_caller_frame_slots)
static MemoryRepresentation FromMachineType(MachineType type)
static constexpr MemoryRepresentation AnyTagged()
static constexpr MemoryRepresentation Uint32()
static constexpr MemoryRepresentation UintPtr()
static constexpr OpIndex Invalid()
#define TURBOSHAFT_REDUCER_BOILERPLATE(Name)
constexpr Vector< T > VectorOf(T *start, size_t size)
CallDescriptor * GetWasmCallDescriptor(Zone *zone, const Signature< T > *fsig, WasmCallKind call_kind, bool need_frame_state)
static const Operator * IntPtrConstant(CommonOperatorBuilder *common, intptr_t value)
kWasmInternalFunctionIndirectPointerTag kProtectedInstanceDataOffset sig
constexpr int kSystemPointerSize
V8_EXPORT_PRIVATE FlagValues v8_flags
static int FrameSlotToFPOffset(int slot)
i::Address Load(i::Address address)
#define CHECK_EQ(lhs, rhs)
static constexpr Kind RawAligned()
constexpr OpEffects CanCreateIdentity() const
constexpr OpEffects RequiredWhenUnused() const
constexpr OpEffects CanReadMemory() const
static const TSCallDescriptor * Create(const CallDescriptor *descriptor, CanThrow can_throw, LazyDeoptOnThrow lazy_deopt_on_throw, Zone *graph_zone, const JSWasmCallParameters *js_wasm_call_parameters=nullptr)