From f635e63318447ca04731b265a86a573c9ed1737c Mon Sep 17 00:00:00 2001 From: Nicolas Geoffray Date: Wed, 14 May 2014 09:43:38 +0100 Subject: Add a compilation tracing mechanism to the new compiler. Code mostly imported from: https://android-review.googlesource.com/#/c/81653/. Change-Id: I150fe942be0fb270e03fabb19032180f7a065d13 --- compiler/optimizing/graph_visualizer.h | 63 ++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 compiler/optimizing/graph_visualizer.h (limited to 'compiler/optimizing/graph_visualizer.h') diff --git a/compiler/optimizing/graph_visualizer.h b/compiler/optimizing/graph_visualizer.h new file mode 100644 index 0000000000..433d55d421 --- /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_ -- cgit v1.2.3