summaryrefslogtreecommitdiff
path: root/runtime/mirror/class_loader-inl.h
diff options
context:
space:
mode:
author Mathieu Chartier <mathieuc@google.com> 2016-04-05 14:36:57 -0700
committer Mathieu Chartier <mathieuc@google.com> 2016-04-06 12:22:42 -0700
commitb8aa1e4c10dcdc7fef96634f87e259dfee83a1cf (patch)
tree807e112893a06d0742f5d595493ec5efa5c72a4e /runtime/mirror/class_loader-inl.h
parent163388162bde0012dc13a59fb8974723af881e58 (diff)
Shard classloader classes lock
Used to guard adding and removing classes. Previously we used the class linker classes lock, but this had a deadlock issue since the reference processor may need to acquire the lock to mark the classes of a class loader. Another thread could be blocked trying to access weak globals while also holding the class linker classes lock. Bug: 27946564 (cherry picked from commit 1609e3a42051769f4a8be3b6731e7bb2f828b3bb) Change-Id: Ic5cfe573c4e6822d49ad0862ffdd9d036e439a96
Diffstat (limited to 'runtime/mirror/class_loader-inl.h')
-rw-r--r--runtime/mirror/class_loader-inl.h1
1 files changed, 0 insertions, 1 deletions
diff --git a/runtime/mirror/class_loader-inl.h b/runtime/mirror/class_loader-inl.h
index 84fa80f023..cc910b035a 100644
--- a/runtime/mirror/class_loader-inl.h
+++ b/runtime/mirror/class_loader-inl.h
@@ -34,7 +34,6 @@ inline void ClassLoader::VisitReferences(mirror::Class* klass, const Visitor& vi
VisitInstanceFieldsReferences<kVerifyFlags, kReadBarrierOption>(klass, visitor);
if (kVisitClasses) {
// Visit classes loaded after.
- ReaderMutexLock mu(Thread::Current(), *Locks::classlinker_classes_lock_);
ClassTable* const class_table = GetClassTable();
if (class_table != nullptr) {
class_table->VisitRoots(visitor);