summaryrefslogtreecommitdiff
path: root/compiler/optimizing/graph_visualizer.cc
diff options
context:
space:
mode:
authorDavid Brazdil <dbrazdil@google.com>2015-06-23 10:22:38 +0100
committerDavid Brazdil <dbrazdil@google.com>2015-06-23 10:24:05 +0100
commit3a690be14f70cf1040d5492530b73c97317897e6 (patch)
tree9cfa99a92e0326d7fd0aa63381be5f010482e9f4 /compiler/optimizing/graph_visualizer.cc
parentda0e224d79262b11fbac9e7b1fdc11c4df31b77f (diff)
ART: Fix GraphVisualizer dlopen crash
The HGraphVisualizer used to crash if it failed to dlopen the libart(d)-disassembler.so. This patch fixes that. Bug: 22001285 Change-Id: Ibe9b9af17a77e22e3571c886f77918e9491b7827
Diffstat (limited to 'compiler/optimizing/graph_visualizer.cc')
-rw-r--r--compiler/optimizing/graph_visualizer.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/compiler/optimizing/graph_visualizer.cc b/compiler/optimizing/graph_visualizer.cc
index 2b85c7c6f9..7d723ef13d 100644
--- a/compiler/optimizing/graph_visualizer.cc
+++ b/compiler/optimizing/graph_visualizer.cc
@@ -96,7 +96,7 @@ typedef Disassembler* create_disasm_prototype(InstructionSet instruction_set,
class HGraphVisualizerDisassembler {
public:
HGraphVisualizerDisassembler(InstructionSet instruction_set, const uint8_t* base_address)
- : instruction_set_(instruction_set) {
+ : instruction_set_(instruction_set), disassembler_(nullptr) {
libart_disassembler_handle_ =
dlopen(kIsDebugBuild ? "libartd-disassembler.so" : "libart-disassembler.so", RTLD_NOW);
if (libart_disassembler_handle_ == nullptr) {
@@ -128,6 +128,10 @@ class HGraphVisualizerDisassembler {
}
void Disassemble(std::ostream& output, size_t start, size_t end) const {
+ if (disassembler_ == nullptr) {
+ return;
+ }
+
const uint8_t* base = disassembler_->GetDisassemblerOptions()->base_address_;
if (instruction_set_ == kThumb2) {
// ARM and Thumb-2 use the same disassembler. The bottom bit of the