diff options
author | 2021-10-29 14:57:37 -0700 | |
---|---|---|
committer | 2021-11-01 09:12:47 +0000 | |
commit | 808d8cc8114e0c5ee3116639fe9d31be5a70403a (patch) | |
tree | d742448258da26e44ef1bddf1ed59c24531ab2ed | |
parent | d1729267e686f568a6c9c853ad80dceb7e7e6f0d (diff) |
Assign lower level to Small IRT table lock
It can be acquired after Class loader classes lock. Jvmti
GetLoadedClasses traverses classes with a visitor that may need
to allocate a LocalRef.
Bug: 184847225
Test: Build and boot AOSP
Change-Id: Ic19b2a3238321bc21440064f0d1b531ed254ea35
-rw-r--r-- | runtime/indirect_reference_table.cc | 2 | ||||
-rw-r--r-- | runtime/indirect_reference_table.h | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/runtime/indirect_reference_table.cc b/runtime/indirect_reference_table.cc index 4a06b2f2d7..fbe678bea2 100644 --- a/runtime/indirect_reference_table.cc +++ b/runtime/indirect_reference_table.cc @@ -80,7 +80,7 @@ static inline MemMap NewIRTMap(size_t table_bytes, std::string* error_msg) { } SmallIrtAllocator::SmallIrtAllocator() - : small_irt_freelist_(nullptr), lock_("Small IRT table lock") { + : small_irt_freelist_(nullptr), lock_("Small IRT table lock", LockLevel::kGenericBottomLock) { } // Allocate an IRT table for kSmallIrtEntries. diff --git a/runtime/indirect_reference_table.h b/runtime/indirect_reference_table.h index 34340e55de..084b534a70 100644 --- a/runtime/indirect_reference_table.h +++ b/runtime/indirect_reference_table.h @@ -247,7 +247,7 @@ class SmallIrtAllocator { // Repository of MemMaps used for small IRT tables. std::vector<MemMap> shared_irt_maps_; - Mutex lock_; + Mutex lock_; // Level kGenericBottomLock; acquired before mem_map_lock_, which is a C++ mutex. }; class IndirectReferenceTable { |