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
diff --git a/runtime/indirect_reference_table.cc b/runtime/indirect_reference_table.cc
index 4a06b2f..fbe678b 100644
--- a/runtime/indirect_reference_table.cc
+++ b/runtime/indirect_reference_table.cc
@@ -80,7 +80,7 @@
 }
 
 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 34340e5..084b534 100644
--- a/runtime/indirect_reference_table.h
+++ b/runtime/indirect_reference_table.h
@@ -247,7 +247,7 @@
   // 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 {