diff options
Diffstat (limited to 'compiler/image_writer.cc')
| -rw-r--r-- | compiler/image_writer.cc | 11 | 
1 files changed, 5 insertions, 6 deletions
diff --git a/compiler/image_writer.cc b/compiler/image_writer.cc index 3e9ae0834c..c72edb18a3 100644 --- a/compiler/image_writer.cc +++ b/compiler/image_writer.cc @@ -940,11 +940,9 @@ void ImageWriter::PruneNonImageClasses() {      }      ObjPtr<mirror::DexCache> dex_cache = self->DecodeJObject(data.weak_root)->AsDexCache();      for (size_t i = 0; i < dex_cache->NumResolvedTypes(); i++) { -      mirror::TypeDexCachePair pair = -          dex_cache->GetResolvedTypes()[i].load(std::memory_order_relaxed); -      mirror::Class* klass = pair.object.Read(); +      Class* klass = dex_cache->GetResolvedType(dex::TypeIndex(i));        if (klass != nullptr && !KeepClass(klass)) { -        dex_cache->ClearResolvedType(dex::TypeIndex(pair.index)); +        dex_cache->SetResolvedType(dex::TypeIndex(i), nullptr);        }      }      ArtMethod** resolved_methods = dex_cache->GetResolvedMethods(); @@ -1924,7 +1922,8 @@ void ImageWriter::CopyAndFixupNativeData(size_t oat_index) {      // above comment for intern tables.      ClassTable temp_class_table;      temp_class_table.ReadFromMemory(class_table_memory_ptr); -    ObjPtr<mirror::ClassLoader> class_loader = GetClassLoader(); +    CHECK_EQ(class_loaders_.size(), compile_app_image_ ? 1u : 0u); +    mirror::ClassLoader* class_loader = compile_app_image_ ? *class_loaders_.begin() : nullptr;      CHECK_EQ(temp_class_table.NumZygoteClasses(class_loader),               table->NumNonZygoteClasses(class_loader) + table->NumZygoteClasses(class_loader));      UnbufferedRootVisitor visitor(&root_visitor, RootInfo(kRootUnknown)); @@ -2214,7 +2213,7 @@ void ImageWriter::FixupDexCache(mirror::DexCache* orig_dex_cache,      orig_dex_cache->FixupStrings(NativeCopyLocation(orig_strings, orig_dex_cache),                                   ImageAddressVisitor(this));    } -  mirror::TypeDexCacheType* orig_types = orig_dex_cache->GetResolvedTypes(); +  GcRoot<mirror::Class>* orig_types = orig_dex_cache->GetResolvedTypes();    if (orig_types != nullptr) {      copy_dex_cache->SetFieldPtrWithSize<false>(mirror::DexCache::ResolvedTypesOffset(),                                                 NativeLocationInImage(orig_types),  |