diff options
| author | 2017-03-16 16:18:15 +0000 | |
|---|---|---|
| committer | 2017-03-23 15:25:27 +0000 | |
| commit | f25cc730ff70f085daf527f69a02fdee69aee16b (patch) | |
| tree | 2f36f61990add16e7519d8b93506d6049dd7764c /runtime/class_linker.cc | |
| parent | 7591bdadf72a2fe155f937b8dc66f6249cedd014 (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.cc | 2 |
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) { |