5#ifndef V8_COMPILER_PIPELINE_DATA_INL_H_
6#define V8_COMPILER_PIPELINE_DATA_INL_H_
41#if V8_ENABLE_WEBASSEMBLY
50 while (!IsNativeContext(*current)) {
51 if (current->IsModuleContext()) {
53 info->CanonicalHandle(current, current->GetIsolate()), distance));
55 current = current->previous();
80 info_->trace_heap_broker(),
92#if V8_ENABLE_WEBASSEMBLY
93 js_wasm_calls_sidetable_ =
106 info->node_observer()
113#if V8_ENABLE_WEBASSEMBLY
258 template <
typename T>
264 size_t node_count_hint = 0) {
355 if (
info()->function_context_specializing()) {
382#if V8_ENABLE_WEBASSEMBLY
383 if (
info_->IsWasm() ||
info_->IsWasmBuiltin()) {
408#ifdef V8_ENABLE_WEBASSEMBLY
409 js_wasm_calls_sidetable_ =
nullptr;
464 int fixed_frame_size = 0;
465 if (call_descriptor !=
nullptr) {
496#if V8_ENABLE_WEBASSEMBLY
498 this->
info()->IsWasm() || this->
info()->IsWasmBuiltin();
539#if V8_ENABLE_WEBASSEMBLY
540 bool has_js_wasm_calls()
const {
541 return wasm_module_for_inlining_ !=
nullptr;
544 return wasm_module_for_inlining_;
546 void set_wasm_module_for_inlining(
const wasm::WasmModule* module) {
549 wasm_module_for_inlining_ =
module;
552 return js_wasm_calls_sidetable_;
558#if V8_ENABLE_WEBASSEMBLY
602 std::unique_ptr<turboshaft::PipelineData>
ts_data_;
CodeTracer * GetCodeTracer()
static constexpr MachineRepresentation PointerRepresentation()
TickCounter & tick_counter()
constexpr bool is_empty() const
int CalculateFixedFrameSize(CodeKind code_kind) const
DoubleRegList CalleeSavedFPRegisters() const
bool RequiresFrameAsIncoming() const
static MachineOperatorBuilder::AlignmentRequirements AlignmentRequirements()
static MachineOperatorBuilder::Flags SupportedMachineOperatorFlags()
static InstructionBlocks * InstructionBlocksFor(Zone *zone, const Schedule *schedule)
const InstructionBlocks & instruction_blocks() const
JSOperatorBuilder * javascript() const
SimplifiedOperatorBuilder * simplified() const
CommonOperatorBuilder * common() const
MachineOperatorBuilder * machine() const
V8_EXPORT_PRIVATE void SetupFrame(Frame *frame)
turboshaft::ZoneWithNamePointer< T, kGraphZoneName > GraphZonePointer
void set_node_origins(NodeOriginTable *node_origins)
Schedule * schedule() const
ZoneStats::Scope codegen_zone_scope_
RegisterAllocationData * register_allocation_data() const
TurbofanPipelineStatistics * pipeline_statistics()
void InitializeOsrHelper()
CodeGenerator * code_generator() const
JSHeapBroker * broker() const
CodeGenerator * code_generator_
TFPipelineData(const TFPipelineData &)=delete
void InitializeInstructionSequence(const CallDescriptor *call_descriptor)
ObserveNodeManager * observe_node_manager() const
const char * debug_name() const
void ChooseSpecializationContext()
Maybe< OuterContext > specialization_context() const
size_t max_unoptimized_frame_height() const
AccountingAllocator * allocator() const
AccountingAllocator *const allocator_
MachineOperatorBuilder * machine() const
NodeOriginTable * node_origins_
JumpOptimizationInfo * jump_optimization_info_
SourcePositionTable * source_positions_
ObserveNodeManager * observe_node_manager_
turboshaft::ZoneWithName< kGraphZoneName > ReleaseGraphZone()
void InitializeFrameData(CallDescriptor *call_descriptor)
size_t max_pushed_argument_count_
std::shared_ptr< OsrHelper > osr_helper_
OptimizedCompilationInfo *const info_
void set_runtime_call_stats(RuntimeCallStats *stats)
MachineGraph * mcgraph() const
size_t * address_of_max_unoptimized_frame_height()
ZoneStats *const zone_stats_
RegisterAllocationData * register_allocation_data_
ZoneStats::Scope register_allocation_zone_scope_
bool MayHaveUnverifiableGraph() const
SourcePositionTable * source_positions() const
CompilationDependencies * dependencies_
void set_graph(TFGraph *graph)
ZoneStats::Scope instruction_zone_scope_
int start_source_position() const
MachineOperatorBuilder * machine_
TFPipelineData(ZoneStats *zone_stats, Isolate *isolate, OptimizedCompilationInfo *info, TurbofanPipelineStatistics *pipeline_statistics)
void InitializeCodeGenerator(Linkage *linkage)
ZoneStats * zone_stats() const
Zone * instruction_zone() const
JSOperatorBuilder * javascript_
CommonOperatorBuilder * common() const
NodeOriginTable * node_origins() const
CommonOperatorBuilder * common_
CodeTracer * GetCodeTracer() const
turboshaft::ZoneWithName< kGraphZoneName > graph_zone_
Maybe< OuterContext > specialization_context_
OptimizedCompilationInfo * info() const
MaybeIndirectHandle< Code > code()
std::unique_ptr< turboshaft::PipelineData > ts_data_
std::unique_ptr< char[]> debug_name_
TFPipelineData(ZoneStats *zone_stats, OptimizedCompilationInfo *info, Isolate *isolate, AccountingAllocator *allocator, TFGraph *graph, JSGraph *jsgraph, Schedule *schedule, SourcePositionTable *source_positions, NodeOriginTable *node_origins, JumpOptimizationInfo *jump_opt, const AssemblerOptions &assembler_options, const ProfileDataFromFile *profile_data)
void set_schedule(Schedule *schedule)
DirectHandle< JSGlobalObject > global_object() const
void set_source_position_output(std::string const &source_position_output)
size_t * address_of_max_pushed_argument_count()
JSGraph * jsgraph() const
void InitializeWithGraphZone(turboshaft::ZoneWithName< kGraphZoneName > graph_zone, GraphZonePointer< SourcePositionTable > source_positions, GraphZonePointer< NodeOriginTable > node_origins, size_t node_count_hint=0)
const AssemblerOptions & assembler_options() const
void set_code(MaybeIndirectHandle< Code > code)
JumpOptimizationInfo * jump_optimization_info() const
const ProfileDataFromFile * profile_data_
Zone * codegen_zone() const
size_t max_pushed_argument_count() const
MaybeIndirectHandle< Code > code_
DirectHandle< NativeContext > native_context() const
std::shared_ptr< JSHeapBroker > broker_
void set_verify_graph(bool value)
Zone * register_allocation_zone_
Typer::Flags typer_flags_
SimplifiedOperatorBuilder * simplified() const
void BeginPhaseKind(const char *phase_kind_name)
SimplifiedOperatorBuilder * simplified_
void DeleteInstructionZone()
JSOperatorBuilder * javascript() const
TurbofanPipelineStatistics * pipeline_statistics_
void set_profile_data(const ProfileDataFromFile *profile_data)
void set_source_positions(SourcePositionTable *source_positions)
AssemblerOptions assembler_options_
std::shared_ptr< OsrHelper > osr_helper_ptr() const
bool verify_graph() const
TFPipelineData(ZoneStats *zone_stats, OptimizedCompilationInfo *info, Isolate *isolate, InstructionSequence *sequence)
InstructionSequence * sequence() const
const ProfileDataFromFile * profile_data() const
RuntimeCallStats * runtime_call_stats_
CompilationDependencies * dependencies() const
std::shared_ptr< JSHeapBroker > broker_ptr()
size_t max_unoptimized_frame_height_
void DeleteRegisterAllocationZone()
Zone * register_allocation_zone() const
bool may_have_unverifiable_graph_
void set_start_source_position(int position)
void InitializeRegisterAllocationData(const RegisterConfiguration *config, CallDescriptor *call_descriptor)
std::string source_position_output_
InstructionSequence * sequence_
int start_source_position_
void AddTyperFlag(Typer::Flag flag)
TFPipelineData & operator=(const TFPipelineData &)=delete
RuntimeCallStats * runtime_call_stats() const
Isolate * isolate() const
std::string const & source_position_output() const
void BeginPhaseKind(const char *name)
ZoneWithNamePointer< T, Name > New(Args &&... args)
CodeTracer * GetCodeTracer()
JsWasmCallsSidetable * js_wasm_calls_sidetable
base::Vector< const char > GetDebugName(Zone *zone, const wasm::WasmModule *module, const wasm::WireBytesStorage *wire_bytes, int index)
constexpr char kInstructionZoneName[]
constexpr char kRegisterAllocationZoneName[]
constexpr char kGraphZoneName[]
ZoneMap< NodeId, const JSWasmCallParameters * > JsWasmCallsSidetable
OptionalContextRef GetModuleContext(JSHeapBroker *broker, Node *node, Maybe< OuterContext > maybe_context)
constexpr char kCodegenZoneName[]
WasmEngine * GetWasmEngine()
constexpr int kNoSourcePosition
V8_INLINE DirectHandle< T > direct_handle(Tagged< T > object, Isolate *isolate)
static constexpr bool kCompressGraphZone
V8_EXPORT_PRIVATE FlagValues v8_flags
Maybe< T > Just(const T &t)
#define DCHECK(condition)
#define DCHECK_EQ(v1, v2)