v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
pipeline.cc File Reference
#include "src/compiler/pipeline.h"
#include <fstream>
#include <iostream>
#include <memory>
#include <optional>
#include <sstream>
#include "src/base/macros.h"
#include "src/builtins/builtins.h"
#include "src/builtins/profile-data-reader.h"
#include "src/codegen/bailout-reason.h"
#include "src/codegen/compiler.h"
#include "src/codegen/interface-descriptors-inl.h"
#include "src/codegen/optimized-compilation-info.h"
#include "src/codegen/register-configuration.h"
#include "src/codegen/reloc-info-inl.h"
#include "src/codegen/reloc-info.h"
#include "src/common/globals.h"
#include "src/common/high-allocation-throughput-scope.h"
#include "src/compiler/add-type-assertions-reducer.h"
#include "src/compiler/backend/bitcast-elider.h"
#include "src/compiler/backend/code-generator.h"
#include "src/compiler/backend/instruction-selector.h"
#include "src/compiler/backend/instruction.h"
#include "src/compiler/backend/register-allocator-verifier.h"
#include "src/compiler/backend/register-allocator.h"
#include "src/compiler/basic-block-instrumentor.h"
#include "src/compiler/branch-elimination.h"
#include "src/compiler/bytecode-graph-builder.h"
#include "src/compiler/checkpoint-elimination.h"
#include "src/compiler/code-assembler-compilation-job.h"
#include "src/compiler/code-assembler.h"
#include "src/compiler/common-operator-reducer.h"
#include "src/compiler/common-operator.h"
#include "src/compiler/compilation-dependencies.h"
#include "src/compiler/compiler-source-position-table.h"
#include "src/compiler/constant-folding-reducer.h"
#include "src/compiler/csa-load-elimination.h"
#include "src/compiler/dead-code-elimination.h"
#include "src/compiler/escape-analysis-reducer.h"
#include "src/compiler/escape-analysis.h"
#include "src/compiler/graph-trimmer.h"
#include "src/compiler/js-call-reducer.h"
#include "src/compiler/js-context-specialization.h"
#include "src/compiler/js-create-lowering.h"
#include "src/compiler/js-generic-lowering.h"
#include "src/compiler/js-heap-broker.h"
#include "src/compiler/js-inlining-heuristic.h"
#include "src/compiler/js-intrinsic-lowering.h"
#include "src/compiler/js-native-context-specialization.h"
#include "src/compiler/js-typed-lowering.h"
#include "src/compiler/late-escape-analysis.h"
#include "src/compiler/linkage.h"
#include "src/compiler/load-elimination.h"
#include "src/compiler/loop-analysis.h"
#include "src/compiler/loop-peeling.h"
#include "src/compiler/loop-variable-optimizer.h"
#include "src/compiler/machine-graph-verifier.h"
#include "src/compiler/machine-operator-reducer.h"
#include "src/compiler/memory-optimizer.h"
#include "src/compiler/node-observer.h"
#include "src/compiler/node-origin-table.h"
#include "src/compiler/osr.h"
#include "src/compiler/pair-load-store-reducer.h"
#include "src/compiler/phase.h"
#include "src/compiler/pipeline-data-inl.h"
#include "src/compiler/pipeline-statistics.h"
#include "src/compiler/raw-machine-assembler.h"
#include "src/compiler/redundancy-elimination.h"
#include "src/compiler/schedule.h"
#include "src/compiler/scheduler.h"
#include "src/compiler/simplified-lowering.h"
#include "src/compiler/simplified-operator-reducer.h"
#include "src/compiler/simplified-operator.h"
#include "src/compiler/turbofan-graph-visualizer.h"
#include "src/compiler/turbofan-typer.h"
#include "src/compiler/turboshaft/build-graph-phase.h"
#include "src/compiler/turboshaft/debug-feature-lowering-phase.h"
#include "src/compiler/turboshaft/instruction-selection-phase.h"
#include "src/compiler/turboshaft/loop-peeling-phase.h"
#include "src/compiler/turboshaft/loop-unrolling-phase.h"
#include "src/compiler/turboshaft/phase.h"
#include "src/compiler/turboshaft/pipelines.h"
#include "src/compiler/turboshaft/simplify-tf-loops.h"
#include "src/compiler/turboshaft/tracing.h"
#include "src/compiler/type-narrowing-reducer.h"
#include "src/compiler/typed-optimization.h"
#include "src/compiler/value-numbering-reducer.h"
#include "src/compiler/verifier.h"
#include "src/compiler/zone-stats.h"
#include "src/diagnostics/code-tracer.h"
#include "src/diagnostics/disassembler.h"
#include "src/flags/flags.h"
#include "src/handles/handles-inl.h"
#include "src/heap/local-heap.h"
#include "src/logging/code-events.h"
#include "src/logging/counters.h"
#include "src/logging/runtime-call-stats-scope.h"
#include "src/logging/runtime-call-stats.h"
#include "src/objects/code-kind.h"
#include "src/objects/shared-function-info.h"
#include "src/objects/string-inl.h"
#include "src/tracing/trace-event.h"
#include "src/utils/ostreams.h"
#include "src/utils/utils.h"

Go to the source code of this file.

Classes

class  v8::internal::compiler::PipelineImpl
 
class  v8::internal::compiler::PipelineCompilationJob
 
struct  v8::internal::compiler::GraphBuilderPhase
 
struct  v8::internal::compiler::InliningPhase
 
struct  v8::internal::compiler::EarlyGraphTrimmingPhase
 
struct  v8::internal::compiler::TyperPhase
 
struct  v8::internal::compiler::UntyperPhase
 
struct  v8::internal::compiler::HeapBrokerInitializationPhase
 
struct  v8::internal::compiler::TypedLoweringPhase
 
struct  v8::internal::compiler::EscapeAnalysisPhase
 
struct  v8::internal::compiler::TypeAssertionsPhase
 
struct  v8::internal::compiler::SimplifiedLoweringPhase
 
struct  v8::internal::compiler::LoopPeelingPhase
 
struct  v8::internal::compiler::LoopExitEliminationPhase
 
struct  v8::internal::compiler::GenericLoweringPhase
 
struct  v8::internal::compiler::EarlyOptimizationPhase
 
struct  v8::internal::compiler::LoadEliminationPhase
 
struct  v8::internal::compiler::MemoryOptimizationPhase
 
struct  v8::internal::compiler::ComputeSchedulePhase
 
struct  v8::internal::compiler::PrintGraphPhase
 
struct  v8::internal::compiler::VerifyGraphPhase
 
struct  v8::internal::compiler::CodeAssemblerCompilationJob::TFDataAndPipeline
 
class  v8::internal::compiler::CodeAssemblerTurboshaftCompilationJob
 

Namespaces

namespace  v8
 
namespace  v8::internal
 
namespace  v8::internal::compiler
 

Macros

#define RUN_MAYBE_ABORT(phase, ...)
 
#define PIPELINE_RUN_MAYBE_ABORT(pipeline, phase, ...)
 

Functions

void v8::internal::compiler::TraceSchedule (OptimizedCompilationInfo *info, TFPipelineData *data, Schedule *schedule, const char *phase_name)
 
void v8::internal::compiler::PrintCode (Isolate *isolate, DirectHandle< Code > code, OptimizedCompilationInfo *info)
 
bool v8::internal::compiler::CheckNoDeprecatedMaps (DirectHandle< Code > code, Isolate *isolate)
 
std::ostream & v8::internal::compiler::operator<< (std::ostream &out, const InstructionRangesAsJSON &s)
 

Variables

static constexpr char v8::internal::compiler::kPipelineCompilationJobZoneName []
 

Macro Definition Documentation

◆ PIPELINE_RUN_MAYBE_ABORT

#define PIPELINE_RUN_MAYBE_ABORT ( pipeline,
phase,
... )
Value:
if (V8_UNLIKELY(!(pipeline).Run<phase>(__VA_ARGS__))) return {};
#define V8_UNLIKELY(condition)
Definition v8config.h:660

Definition at line 155 of file pipeline.cc.

◆ RUN_MAYBE_ABORT

#define RUN_MAYBE_ABORT ( phase,
... )
Value:
if (V8_UNLIKELY(!Run<phase>(__VA_ARGS__))) return {};

Definition at line 152 of file pipeline.cc.

Variable Documentation

◆ broker_

JSHeapBroker* broker_
private

Definition at line 304 of file pipeline.cc.

◆ current_broker_

CurrentHeapBrokerScope current_broker_
private

Definition at line 694 of file pipeline.cc.

◆ data_

TFPipelineData* data_ = nullptr
private

Definition at line 692 of file pipeline.cc.

◆ high_throughput_scope_

HighAllocationThroughputScope high_throughput_scope_
private
Initial value:
{
V8::GetCurrentPlatform()}

Definition at line 690 of file pipeline.cc.

◆ info_

OptimizedCompilationInfo* info_
private

Definition at line 305 of file pipeline.cc.

◆ origin_scope_

NodeOriginTable::PhaseScope origin_scope_
private

Definition at line 280 of file pipeline.cc.

◆ phase_scope_

PhaseScope phase_scope_
private

Definition at line 278 of file pipeline.cc.

◆ reducer_

Reducer* const reducer_
private

Definition at line 226 of file pipeline.cc.

◆ table_

NodeOriginTable* const table_
private

Definition at line 227 of file pipeline.cc.

◆ turboshaft_data_

turboshaft::PipelineData* turboshaft_data_ = nullptr
private

Definition at line 693 of file pipeline.cc.

◆ zone_scope_

ZoneStats::Scope zone_scope_
private

Definition at line 279 of file pipeline.cc.