diff options
author | Nicolas Geoffray <ngeoffray@google.com> | 2014-05-14 09:43:38 +0100 |
---|---|---|
committer | Nicolas Geoffray <ngeoffray@google.com> | 2014-05-14 14:26:11 +0100 |
commit | f635e63318447ca04731b265a86a573c9ed1737c (patch) | |
tree | 47cab84a6ac47d8a4f5f281e3eabdf1780f220d0 /compiler/optimizing/graph_visualizer.h | |
parent | d115735fe5523ff72319f0968f773683323c7f79 (diff) | |
download | art-f635e63318447ca04731b265a86a573c9ed1737c.zip art-f635e63318447ca04731b265a86a573c9ed1737c.tar.gz art-f635e63318447ca04731b265a86a573c9ed1737c.tar.bz2 |
Add a compilation tracing mechanism to the new compiler.
Code mostly imported from: https://android-review.googlesource.com/#/c/81653/.
Change-Id: I150fe942be0fb270e03fabb19032180f7a065d13
Diffstat (limited to 'compiler/optimizing/graph_visualizer.h')
-rw-r--r-- | compiler/optimizing/graph_visualizer.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/compiler/optimizing/graph_visualizer.h b/compiler/optimizing/graph_visualizer.h new file mode 100644 index 0000000..433d55d --- /dev/null +++ b/compiler/optimizing/graph_visualizer.h @@ -0,0 +1,63 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ART_COMPILER_OPTIMIZING_GRAPH_VISUALIZER_H_ +#define ART_COMPILER_OPTIMIZING_GRAPH_VISUALIZER_H_ + +#include "utils/allocation.h" + +namespace art { + +class DexCompilationUnit; +class HGraph; + +/** + * If enabled, emits compilation information suitable for the c1visualizer tool + * and IRHydra. + * Currently only works if the compiler is single threaded. + */ +class HGraphVisualizer : public ValueObject { + public: + /** + * If output is not null, and the method name of the dex compilation + * unit contains `string_filter`, the compilation information will be + * emitted. + */ + HGraphVisualizer(std::ostream* output, + HGraph* graph, + const char* string_filter, + const DexCompilationUnit& cu); + + /** + * If this visualizer is enabled, emit the compilation information + * in `output_`. + */ + void DumpGraph(const char* pass_name); + + private: + std::ostream* const output_; + HGraph* const graph_; + + // Is true when `output_` is not null, and the compiled method's name + // contains the string_filter given in the constructor. + bool is_enabled_; + + DISALLOW_COPY_AND_ASSIGN(HGraphVisualizer); +}; + +} // namespace art + +#endif // ART_COMPILER_OPTIMIZING_GRAPH_VISUALIZER_H_ |