diff options
Diffstat (limited to 'runtime/gc/space/image_space.cc')
-rw-r--r-- | runtime/gc/space/image_space.cc | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/runtime/gc/space/image_space.cc b/runtime/gc/space/image_space.cc index 010ef1156a..568f8d62a8 100644 --- a/runtime/gc/space/image_space.cc +++ b/runtime/gc/space/image_space.cc @@ -1259,17 +1259,18 @@ class ImageSpaceLoader { } } } - ArtField** fields = dex_cache->GetResolvedFields(); + mirror::FieldDexCacheType* fields = dex_cache->GetResolvedFields(); if (fields != nullptr) { - ArtField** new_fields = fixup_adapter.ForwardObject(fields); + mirror::FieldDexCacheType* new_fields = fixup_adapter.ForwardObject(fields); if (fields != new_fields) { dex_cache->SetResolvedFields(new_fields); } for (size_t j = 0, num = dex_cache->NumResolvedFields(); j != num; ++j) { - ArtField* orig = mirror::DexCache::GetElementPtrSize(new_fields, j, pointer_size); - ArtField* copy = fixup_adapter.ForwardObject(orig); - if (orig != copy) { - mirror::DexCache::SetElementPtrSize(new_fields, j, copy, pointer_size); + mirror::FieldDexCachePair orig = + mirror::DexCache::GetNativePairPtrSize(new_fields, j, pointer_size); + mirror::FieldDexCachePair copy(fixup_adapter.ForwardObject(orig.object), orig.index); + if (orig.object != copy.object) { + mirror::DexCache::SetNativePairPtrSize(new_fields, j, copy, pointer_size); } } } |