Revert "Revert "Hold dex caches live in class table""
Bug: 29083330
This reverts commit f102faf1bcbdb2149e3e7bf27b1819f621b7894b.
(cherry picked from commit c9dbb1df3b5c06ba122cacaf35b17cb53c6be3c6)
Change-Id: Ib5d82bde2e4a031c1cab0ea6116925ef99d9f07f
diff --git a/runtime/class_linker.h b/runtime/class_linker.h
index f6ce545..0715bab 100644
--- a/runtime/class_linker.h
+++ b/runtime/class_linker.h
@@ -377,7 +377,8 @@
SHARED_REQUIRES(Locks::mutator_lock_)
REQUIRES(!dex_lock_, !Roles::uninterruptible_);
- mirror::DexCache* RegisterDexFile(const DexFile& dex_file, LinearAlloc* linear_alloc)
+ mirror::DexCache* RegisterDexFile(const DexFile& dex_file,
+ mirror::ClassLoader* class_loader)
REQUIRES(!dex_lock_)
SHARED_REQUIRES(Locks::mutator_lock_);
void RegisterDexFile(const DexFile& dex_file, Handle<mirror::DexCache> dex_cache)
@@ -634,6 +635,11 @@
// Create the IMT and conflict tables for a class.
void FillIMTAndConflictTables(mirror::Class* klass) SHARED_REQUIRES(Locks::mutator_lock_);
+ // Clear class table strong roots (other than classes themselves). This is done by dex2oat to
+ // allow pruning dex caches.
+ void ClearClassTableStrongRoots() const
+ REQUIRES(!Locks::classlinker_classes_lock_)
+ SHARED_REQUIRES(Locks::mutator_lock_);
struct DexCacheData {
// Weak root to the DexCache. Note: Do not decode this unnecessarily or else class unloading may