Support map data in the backtrace data structure.

The backtrace data structure used to keep a pointer to the map data. Now
the code has the map data embedded in the structure and no pointers.

Bug: 19028453
Change-Id: If7088a73f3c6bf1f3bc8cdd2bb4b62e7cab831c0
diff --git a/runtime/utils.cc b/runtime/utils.cc
index 8347b7e..af16d7e 100644
--- a/runtime/utils.cc
+++ b/runtime/utils.cc
@@ -1225,11 +1225,11 @@
     // #XX. <RELATIVE_ADDR> has to be a hex number but with no 0x prefix.
     os << prefix << StringPrintf("#%02zu pc ", it->num);
     bool try_addr2line = false;
-    if (!it->map) {
+    if (!BacktraceMap::IsValid(it->map)) {
       os << StringPrintf("%08" PRIxPTR "  ???", it->pc);
     } else {
-      os << StringPrintf("%08" PRIxPTR "  ", it->pc - it->map->start);
-      os << it->map->name;
+      os << StringPrintf("%08" PRIxPTR "  ", it->pc - it->map.start);
+      os << it->map.name;
       os << " (";
       if (!it->func_name.empty()) {
         os << it->func_name;
@@ -1250,7 +1250,7 @@
     }
     os << "\n";
     if (try_addr2line && use_addr2line) {
-      Addr2line(it->map->name, it->pc - it->map->start, os, prefix);
+      Addr2line(it->map.name, it->pc - it->map.start, os, prefix);
     }
   }
 #else