summaryrefslogtreecommitdiff
path: root/runtime/class_linker.cc
diff options
context:
space:
mode:
author Vladimir Marko <vmarko@google.com> 2017-03-16 16:18:15 +0000
committer Vladimir Marko <vmarko@google.com> 2017-03-23 15:25:27 +0000
commitf25cc730ff70f085daf527f69a02fdee69aee16b (patch)
tree2f36f61990add16e7519d8b93506d6049dd7764c /runtime/class_linker.cc
parent7591bdadf72a2fe155f937b8dc66f6249cedd014 (diff)
Deterministic DexCache in heap images.
Preload each slot in dex cache arrays with the candidate entry with the lowest index. Also fix a discrepancy where we used to keep an ArtField* in the DexCache if we kept the declaring class rather than based on the class referenced in the corresponding FieldId. This can result in accessing a field through a FieldId with an unresolved class as demonstrated by the regression test. Test: 159-app-image-fields Test: testrunner.py --host Bug: 30627598 Change-Id: I34735047cb064ff462cd9859e86a61ddf8615ecd
Diffstat (limited to 'runtime/class_linker.cc')
-rw-r--r--runtime/class_linker.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/runtime/class_linker.cc b/runtime/class_linker.cc
index 746cace8a6..9a64097a01 100644
--- a/runtime/class_linker.cc
+++ b/runtime/class_linker.cc
@@ -7819,7 +7819,7 @@ mirror::String* ClassLinker::ResolveString(const DexFile& dex_file,
mirror::String* ClassLinker::LookupString(const DexFile& dex_file,
dex::StringIndex string_idx,
- Handle<mirror::DexCache> dex_cache) {
+ ObjPtr<mirror::DexCache> dex_cache) {
DCHECK(dex_cache != nullptr);
ObjPtr<mirror::String> resolved = dex_cache->GetResolvedString(string_idx);
if (resolved != nullptr) {