5#ifndef V8_COMPILER_TURBOFAN_GRAPH_VISUALIZER_H_
6#define V8_COMPILER_TURBOFAN_GRAPH_VISUALIZER_H_
23class OptimizedCompilationInfo;
24class SharedFunctionInfo;
26struct WasmInliningPosition;
30class WireBytesStorage;
37class TopLevelLiveRange;
39class InstructionBlock;
40class InstructionOperand;
41class InstructionSequence;
45class RegisterAllocationData;
47class SourcePositionTable;
68 if (c ==
'"')
return os <<
"\\\"";
69 if (c ==
'\\')
return os <<
"\\\\";
70 if (c ==
'\b')
return os <<
"\\b";
71 if (c ==
'\f')
return os <<
"\\f";
72 if (c ==
'\n')
return os <<
"\\n";
73 if (c ==
'\r')
return os <<
"\\r";
74 if (c ==
'\t')
return os <<
"\\t";
110std::ostream&
operator<<(std::ostream& out,
const SourcePositionAsJSON&
pos);
111std::ostream&
operator<<(std::ostream& out,
const NodeOriginAsJSON& asJSON);
117 printed_.reserve(size);
118 source_ids_.reserve(size);
132 std::unique_ptr<
char[]> function_name,
140#if V8_ENABLE_WEBASSEMBLY
141void JsonPrintAllSourceWithPositionsWasm(
148 std::unique_ptr<
char[]> function_name,
151 bool with_key =
false);
154 const char* optional_base_dir,
188 : graph(g), positions(p),
origins(o) {}
201 const GraphAsJSON& ad);
JSONEscaped(std::string str)
JSONEscaped(const std::ostringstream &os)
JSONEscaped(const T &value)
friend std::ostream & operator<<(std::ostream &os, const JSONEscaped &e)
static std::ostream & PipeCharacter(std::ostream &os, char c)
void PrintPhase(const char *phase_name)
JSONGraphWriter(const JSONGraphWriter &)=delete
JSONGraphWriter(std::ostream &os, const TFGraph *graph, const SourcePositionTable *positions, const NodeOriginTable *origins)
JSONGraphWriter & operator=(const JSONGraphWriter &)=delete
virtual std::optional< Type > GetType(Node *node)
void PrintEdge(Node *from, int index, Node *to)
const SourcePositionTable * positions_
const NodeOriginTable * origins_
void PrintEdges(Node *node)
void PrintNode(Node *node, bool is_live)
SourceIdAssigner(size_t size)
std::vector< Handle< SharedFunctionInfo > > printed_
int GetIdAt(size_t pos) const
std::vector< int > source_ids_
NodeOriginTable * origins
void JsonPrintBytecodeSource(std::ostream &os, int source_id, std::unique_ptr< char[]> function_name, DirectHandle< BytecodeArray > bytecode_array, Tagged< FeedbackVector > feedback_vector)
void JsonPrintAllBytecodeSources(std::ostream &os, OptimizedCompilationInfo *info)
void JsonPrintAllSourceWithPositions(std::ostream &os, OptimizedCompilationInfo *info, Isolate *isolate)
void JsonPrintFunctionSource(std::ostream &os, int source_id, std::unique_ptr< char[]> function_name, DirectHandle< Script > script, Isolate *isolate, DirectHandle< SharedFunctionInfo > shared, bool with_key)
std::unique_ptr< char[]> GetVisualizerLogFileName(OptimizedCompilationInfo *info, const char *optional_base_dir, const char *phase, const char *suffix)
V8_INLINE V8_EXPORT_PRIVATE SourcePositionAsJSON AsJSON(const SourcePosition &sp)
std::ostream & operator<<(std::ostream &os, AccessMode access_mode)
wasm::WasmModule WasmModule
#define V8_EXPORT_PRIVATE
AsC1VCompilation(const OptimizedCompilationInfo *info)
const OptimizedCompilationInfo * info_
const RegisterAllocationData * data_
AsC1VRegisterAllocationData(const char *phase, const RegisterAllocationData *data=nullptr)
const SourcePositionTable * positions_
const Schedule * schedule_
AsC1V(const char *phase, const Schedule *schedule, const SourcePositionTable *positions=nullptr, const InstructionSequence *instructions=nullptr)
const InstructionSequence * instructions_
AsScheduledGraph(const Schedule *schedule)
const Schedule * schedule
const NodeOriginTable * origins
GraphAsJSON(const TFGraph &g, SourcePositionTable *p, NodeOriginTable *o)
const SourcePositionTable * positions
const InstructionSequence * code_
const Instruction * instr_
const InstructionSequence * code_
const InstructionBlock * block_
const InstructionSequence * code_
const InstructionOperand * op_
const InstructionSequence * sequence_
const InstructionSequence & code_
NodeOriginAsJSON(const NodeOrigin &no)
const InstructionSequence & code_
const RegisterAllocationData & data_
const SourcePosition & sp
SourcePositionAsJSON(const SourcePosition &sp)
const TopLevelLiveRange & range_
const InstructionSequence & code_
TurboCfgFile(Isolate *isolate=nullptr)