// Copyright 2013 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef V8_COMPILER_GRAPH_VISUALIZER_H_ #define V8_COMPILER_GRAPH_VISUALIZER_H_ #include namespace v8 { namespace internal { class CompilationInfo; namespace compiler { class Graph; class InstructionSequence; class RegisterAllocator; class Schedule; class SourcePositionTable; FILE* OpenVisualizerLogFile(CompilationInfo* info, const char* phase, const char* suffix, const char* mode); struct AsDOT { explicit AsDOT(const Graph& g) : graph(g) {} const Graph& graph; }; std::ostream& operator<<(std::ostream& os, const AsDOT& ad); struct AsJSON { AsJSON(const Graph& g, SourcePositionTable* p) : graph(g), positions(p) {} const Graph& graph; const SourcePositionTable* positions; }; std::ostream& operator<<(std::ostream& os, const AsJSON& ad); struct AsRPO { explicit AsRPO(const Graph& g) : graph(g) {} const Graph& graph; }; std::ostream& operator<<(std::ostream& os, const AsRPO& ad); struct AsC1VCompilation { explicit AsC1VCompilation(const CompilationInfo* info) : info_(info) {} const CompilationInfo* info_; }; struct AsC1V { AsC1V(const char* phase, const Schedule* schedule, const SourcePositionTable* positions = NULL, const InstructionSequence* instructions = NULL) : schedule_(schedule), instructions_(instructions), positions_(positions), phase_(phase) {} const Schedule* schedule_; const InstructionSequence* instructions_; const SourcePositionTable* positions_; const char* phase_; }; struct AsC1VAllocator { explicit AsC1VAllocator(const char* phase, const RegisterAllocator* allocator = NULL) : phase_(phase), allocator_(allocator) {} const char* phase_; const RegisterAllocator* allocator_; }; std::ostream& operator<<(std::ostream& os, const AsDOT& ad); std::ostream& operator<<(std::ostream& os, const AsC1VCompilation& ac); std::ostream& operator<<(std::ostream& os, const AsC1V& ac); std::ostream& operator<<(std::ostream& os, const AsC1VAllocator& ac); } // namespace compiler } // namespace internal } // namespace v8 #endif // V8_COMPILER_GRAPH_VISUALIZER_H_