diff options
Diffstat (limited to 'runtime/mirror/class_loader-inl.h')
-rw-r--r-- | runtime/mirror/class_loader-inl.h | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/runtime/mirror/class_loader-inl.h b/runtime/mirror/class_loader-inl.h index e22ddd7e90..84fa80f023 100644 --- a/runtime/mirror/class_loader-inl.h +++ b/runtime/mirror/class_loader-inl.h @@ -25,15 +25,20 @@ namespace art { namespace mirror { -template <VerifyObjectFlags kVerifyFlags, typename Visitor> +template <bool kVisitClasses, + VerifyObjectFlags kVerifyFlags, + ReadBarrierOption kReadBarrierOption, + typename Visitor> inline void ClassLoader::VisitReferences(mirror::Class* klass, const Visitor& visitor) { // Visit instance fields first. - VisitInstanceFieldsReferences(klass, visitor); - // 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); + 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); + } } } |