diff options
author | Android Build Role Account android-build-prod <android-build-team-robot@google.com> | 2021-02-06 00:20:35 +0000 |
---|---|---|
committer | Android Build Role Account android-build-prod <android-build-team-robot@google.com> | 2021-02-06 00:20:35 +0000 |
commit | b944d4abd5852df000a22a8a57aa5637eb4441c2 (patch) | |
tree | e88119c8bebd70e06df7eeebe62e81760848d224 /compiler/optimizing/graph_visualizer.h | |
parent | ff3e2f60facfed9909d58ce4ac9f5c01849de5d8 (diff) | |
parent | 2ca15e8c3e0f3e7356d7a6d9a87a61659342f867 (diff) |
Snap for 7127838 from 2ca15e8c3e0f3e7356d7a6d9a87a61659342f867 to s-keystone-qcom-release
Change-Id: I42a1aad917b6b625dd024ec307842ed71df50284
Diffstat (limited to 'compiler/optimizing/graph_visualizer.h')
-rw-r--r-- | compiler/optimizing/graph_visualizer.h | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/compiler/optimizing/graph_visualizer.h b/compiler/optimizing/graph_visualizer.h index e01d03c19c..3429c11cbd 100644 --- a/compiler/optimizing/graph_visualizer.h +++ b/compiler/optimizing/graph_visualizer.h @@ -17,11 +17,13 @@ #ifndef ART_COMPILER_OPTIMIZING_GRAPH_VISUALIZER_H_ #define ART_COMPILER_OPTIMIZING_GRAPH_VISUALIZER_H_ +#include <functional> #include <ostream> #include "arch/instruction_set.h" #include "base/arena_containers.h" #include "base/value_object.h" +#include "block_namer.h" namespace art { @@ -101,10 +103,12 @@ class HGraphVisualizer : public ValueObject { public: HGraphVisualizer(std::ostream* output, HGraph* graph, - const CodeGenerator& codegen); + const CodeGenerator* codegen, + std::optional<std::reference_wrapper<const BlockNamer>> namer = std::nullopt); void PrintHeader(const char* method_name) const; void DumpGraph(const char* pass_name, bool is_after_pass, bool graph_in_bad_state) const; + void DumpGraphDebug() const; void DumpGraphWithDisassembly() const; // C1visualizer file format does not support inserting arbitrary metadata into a cfg @@ -112,10 +116,24 @@ class HGraphVisualizer : public ValueObject { // method attributes is used. Such empty blocks don't break the c1visualizer parser. static std::string InsertMetaDataAsCompilationBlock(const std::string& meta_data); + static void DumpInstruction(std::ostream* output, HGraph* graph, HInstruction* instruction); + private: + class OptionalDefaultNamer final : public BlockNamer { + public: + explicit OptionalDefaultNamer(std::optional<std::reference_wrapper<const BlockNamer>> inner) + : namer_(inner) {} + + std::ostream& PrintName(std::ostream& os, HBasicBlock* blk) const override; + + private: + std::optional<std::reference_wrapper<const BlockNamer>> namer_; + }; + std::ostream* const output_; HGraph* const graph_; - const CodeGenerator& codegen_; + const CodeGenerator* codegen_; + OptionalDefaultNamer namer_; DISALLOW_COPY_AND_ASSIGN(HGraphVisualizer); }; |