| // 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 <iosfwd> |
| |
| namespace v8 { |
| namespace internal { |
| |
| class CompilationInfo; |
| |
| namespace compiler { |
| |
| class Graph; |
| class InstructionSequence; |
| class RegisterAllocator; |
| class Schedule; |
| class SourcePositionTable; |
| |
| |
| struct AsDOT { |
| explicit AsDOT(const Graph& g) : graph(g) {} |
| const Graph& graph; |
| }; |
| |
| std::ostream& operator<<(std::ostream& os, const AsDOT& ad); |
| |
| |
| struct AsJSON { |
| explicit AsJSON(const Graph& g) : graph(g) {} |
| const Graph& graph; |
| }; |
| |
| 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_ |