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
diff --git a/compiler/optimizing/graph_visualizer.cc b/compiler/optimizing/graph_visualizer.cc
index 2b85c7c..7d723ef 100644
--- a/compiler/optimizing/graph_visualizer.cc
+++ b/compiler/optimizing/graph_visualizer.cc
@@ -96,7 +96,7 @@
 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 @@
   }
 
   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