5#ifndef V8_COMPILER_PHASE_H_
6#define V8_COMPILER_PHASE_H_
11#ifdef V8_RUNTIME_CALL_STATS
12#define DECL_PIPELINE_PHASE_CONSTANTS_HELPER(Name, Kind, Mode) \
13 static constexpr PhaseKind kKind = Kind; \
14 static const char* phase_name() { return "V8.TF" #Name; } \
15 static constexpr RuntimeCallCounterId kRuntimeCallCounterId = \
16 RuntimeCallCounterId::kOptimize##Name; \
17 static constexpr RuntimeCallStats::CounterMode kCounterMode = Mode;
19#define DECL_PIPELINE_PHASE_CONSTANTS_HELPER(Name, Kind, Mode) \
20 static constexpr PhaseKind kKind = Kind; \
21 static const char* phase_name() { return "V8.TF" #Name; }
24#define DECL_PIPELINE_PHASE_CONSTANTS(Name) \
25 DECL_PIPELINE_PHASE_CONSTANTS_HELPER(Name, PhaseKind::kTurbofan, \
26 RuntimeCallStats::kThreadSpecific)
28#define DECL_MAIN_THREAD_PIPELINE_PHASE_CONSTANTS(Name) \
29 DECL_PIPELINE_PHASE_CONSTANTS_HELPER(Name, PhaseKind::kTurbofan, \
30 RuntimeCallStats::kExact)
34class OptimizedCompilationInfo;
42 "register-allocation-zone";
44 "register-allocator-verifier-zone";
63 out <<
", \"instructionOffsetToPCOffset\": {";
64 bool needs_comma =
false;
65 for (
size_t i = 0;
i < s.instr_starts->
size(); ++
i) {
66 if (needs_comma) out <<
", ";
68 out <<
"\"" <<
i <<
"\": {";
69 out <<
"\"gap\": " << info.gap_pc_offset;
70 out <<
", \"arch\": " << info.arch_instr_pc_offset;
71 out <<
", \"condition\": " << info.condition_pc_offset;
85 out <<
", \"codeOffsetsInfo\": {";
86 out <<
"\"codeStartRegisterCheck\": "
87 << s.offsets_info->code_start_register_check <<
", ";
88 out <<
"\"deoptCheck\": " << s.offsets_info->deopt_check <<
", ";
89 out <<
"\"blocksStart\": " << s.offsets_info->blocks_start <<
", ";
90 out <<
"\"outOfLineCode\": " << s.offsets_info->out_of_line_code <<
", ";
91 out <<
"\"deoptimizationExits\": " << s.offsets_info->deoptimization_exits
93 out <<
"\"pools\": " << s.offsets_info->pools <<
", ";
94 out <<
"\"jumpTables\": " << s.offsets_info->jump_tables;
104 out <<
", \"blockIdToOffset\": {";
105 bool needs_comma =
false;
106 for (
size_t i = 0;
i < s.block_starts->
size(); ++
i) {
107 if (needs_comma) out <<
", ";
108 int offset = (*s.block_starts)[
i];
109 out <<
"\"" <<
i <<
"\":" <<
offset;
constexpr char kRegisterAllocatorVerifierZoneName[]
void PrintCode(Isolate *isolate, DirectHandle< Code > code, OptimizedCompilationInfo *info)
constexpr char kInstructionZoneName[]
constexpr char kRegisterAllocationZoneName[]
constexpr char kGraphZoneName[]
void TraceSchedule(OptimizedCompilationInfo *info, TFPipelineData *data, Schedule *schedule, const char *phase_name)
std::ostream & operator<<(std::ostream &os, AccessMode access_mode)
constexpr char kCodegenZoneName[]
const ZoneVector< int > * block_starts
const ZoneVector< TurbolizerInstructionStartInfo > * instr_starts
const TurbolizerCodeOffsetsInfo * offsets_info