summaryrefslogtreecommitdiffstats
path: root/oatdump
diff options
context:
space:
mode:
authorVladimir Marko <vmarko@google.com>2016-12-20 16:24:13 +0000
committerVladimir Marko <vmarko@google.com>2017-01-30 10:21:16 +0000
commitec7862283dd49f5a58d0ac45960ce27c2f7671b8 (patch)
tree26d6dcc1d5ed4f0ba5ac15f17ef7377215684bf6 /oatdump
parentc01d49091f4588777db5bf45345f388058caa99f (diff)
downloadandroid_art-ec7862283dd49f5a58d0ac45960ce27c2f7671b8.tar.gz
android_art-ec7862283dd49f5a58d0ac45960ce27c2f7671b8.tar.bz2
android_art-ec7862283dd49f5a58d0ac45960ce27c2f7671b8.zip
Hash-based dex cache type array.
Test: m test-art-host (Interpreter, Optimizing, JIT) Test: m test-art-target on Nexus 6P (Interpreter, Optimizing, JIT) Test: Nexus 6P boots Test: m valgrind-test-art-host Bug: 30627598 Bug: 34659969 Bug: 30419309 Change-Id: Ic00eda89e58088a3573fc9ec0ad04c0e69e161d1
Diffstat (limited to 'oatdump')
-rw-r--r--oatdump/oatdump.cc12
1 files changed, 9 insertions, 3 deletions
diff --git a/oatdump/oatdump.cc b/oatdump/oatdump.cc
index b6da6c13f3..9b4d3e1156 100644
--- a/oatdump/oatdump.cc
+++ b/oatdump/oatdump.cc
@@ -2180,9 +2180,14 @@ class ImageDumper {
ScopedIndentation indent2(&state->vios_);
auto* resolved_types = dex_cache->GetResolvedTypes();
for (size_t i = 0; i < num_types; ++i) {
- auto* elem = resolved_types[i].Read();
+ auto pair = resolved_types[i].load(std::memory_order_relaxed);
size_t run = 0;
- for (size_t j = i + 1; j != num_types && elem == resolved_types[j].Read(); ++j) {
+ for (size_t j = i + 1; j != num_types; ++j) {
+ auto other_pair = resolved_types[j].load(std::memory_order_relaxed);
+ if (pair.index != other_pair.index ||
+ pair.object.Read() != other_pair.object.Read()) {
+ break;
+ }
++run;
}
if (run == 0) {
@@ -2192,12 +2197,13 @@ class ImageDumper {
i = i + run;
}
std::string msg;
+ auto* elem = pair.object.Read();
if (elem == nullptr) {
msg = "null";
} else {
msg = elem->PrettyClass();
}
- os << StringPrintf("%p %s\n", elem, msg.c_str());
+ os << StringPrintf("%p %u %s\n", elem, pair.index, msg.c_str());
}
}
}