summaryrefslogtreecommitdiff
path: root/compiler/optimizing/graph_visualizer.cc
diff options
context:
space:
mode:
authorAndroid Build Role Account android-build-prod <android-build-team-robot@google.com>2020-11-05 11:04:32 +0000
committerAndroid Build Role Account android-build-prod <android-build-team-robot@google.com>2020-11-05 11:04:32 +0000
commitf2d130c34dc183c7d904d206e18620f91bee52f3 (patch)
treec17d62358cc3a63aac5843891ddb533600137b44 /compiler/optimizing/graph_visualizer.cc
parent8115dbb90241980665d712df089d3c9de7fe6e35 (diff)
parent014281a799b232ecc2300b52e5cbe3fc7517daf8 (diff)
Snap for 6953696 from 014281a799b232ecc2300b52e5cbe3fc7517daf8 to s-keystone-qcom-release
Change-Id: I3016673aec41684ebd0ed67742389f3d87d7b572
Diffstat (limited to 'compiler/optimizing/graph_visualizer.cc')
-rw-r--r--compiler/optimizing/graph_visualizer.cc15
1 files changed, 14 insertions, 1 deletions
diff --git a/compiler/optimizing/graph_visualizer.cc b/compiler/optimizing/graph_visualizer.cc
index d5840fc7cf..f9c63c4486 100644
--- a/compiler/optimizing/graph_visualizer.cc
+++ b/compiler/optimizing/graph_visualizer.cc
@@ -23,6 +23,7 @@
#include "android-base/stringprintf.h"
#include "art_method.h"
+#include "art_method-inl.h"
#include "base/intrusive_forward_list.h"
#include "bounds_check_elimination.h"
#include "builder.h"
@@ -109,13 +110,17 @@ std::ostream& operator<<(std::ostream& os, const StringList& list) {
}
}
+#ifndef ART_STATIC_LIBART_COMPILER
using create_disasm_prototype = Disassembler*(InstructionSet, DisassemblerOptions*);
+#endif
+
class HGraphVisualizerDisassembler {
public:
HGraphVisualizerDisassembler(InstructionSet instruction_set,
const uint8_t* base_address,
const uint8_t* end_address)
: instruction_set_(instruction_set), disassembler_(nullptr) {
+#ifndef ART_STATIC_LIBART_COMPILER
constexpr const char* libart_disassembler_so_name =
kIsDebugBuild ? "libartd-disassembler.so" : "libart-disassembler.so";
libart_disassembler_handle_ = dlopen(libart_disassembler_so_name, RTLD_NOW);
@@ -131,10 +136,11 @@ class HGraphVisualizerDisassembler {
<< libart_disassembler_so_name << ": " << dlerror();
return;
}
+#endif
// Reading the disassembly from 0x0 is easier, so we print relative
// addresses. We will only disassemble the code once everything has
// been generated, so we can read data in literal pools.
- disassembler_ = std::unique_ptr<Disassembler>((*create_disassembler)(
+ disassembler_ = std::unique_ptr<Disassembler>(create_disassembler(
instruction_set,
new DisassemblerOptions(/* absolute_addresses= */ false,
base_address,
@@ -148,9 +154,11 @@ class HGraphVisualizerDisassembler {
~HGraphVisualizerDisassembler() {
// We need to call ~Disassembler() before we close the library.
disassembler_.reset();
+#ifndef ART_STATIC_LIBART_COMPILER
if (libart_disassembler_handle_ != nullptr) {
dlclose(libart_disassembler_handle_);
}
+#endif
}
void Disassemble(std::ostream& output, size_t start, size_t end) const {
@@ -171,7 +179,9 @@ class HGraphVisualizerDisassembler {
InstructionSet instruction_set_;
std::unique_ptr<Disassembler> disassembler_;
+#ifndef ART_STATIC_LIBART_COMPILER
void* libart_disassembler_handle_;
+#endif
};
@@ -470,6 +480,9 @@ class HGraphVisualizerPrinter : public HGraphDelegateVisitor {
StartAttributeStream("always_throws") << std::boolalpha
<< invoke->AlwaysThrows()
<< std::noboolalpha;
+ if (method != nullptr) {
+ StartAttributeStream("method_index") << method->GetMethodIndex();
+ }
}
void VisitInvokeUnresolved(HInvokeUnresolved* invoke) override {