diff options
Diffstat (limited to 'runtime/jni/java_vm_ext.cc')
-rw-r--r-- | runtime/jni/java_vm_ext.cc | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/runtime/jni/java_vm_ext.cc b/runtime/jni/java_vm_ext.cc index a0c013c066..f71ab6f8a3 100644 --- a/runtime/jni/java_vm_ext.cc +++ b/runtime/jni/java_vm_ext.cc @@ -224,15 +224,15 @@ class Libraries { STLDeleteValues(&libraries_); } - void UnloadBootNativeLibraries(JavaVM* vm) { + // NO_THREAD_SAFETY_ANALYSIS as this is during runtime shutdown, and we have + // no thread to lock this with. + void UnloadBootNativeLibraries(JavaVM* vm) const NO_THREAD_SAFETY_ANALYSIS { + CHECK(Thread::Current() == nullptr); std::vector<SharedLibrary*> unload_libraries; - { - MutexLock mu(Thread::Current(), *Locks::jni_libraries_lock_); - for (auto it = libraries_.begin(); it != libraries_.end(); ++it) { - SharedLibrary* const library = it->second; - if (library->GetClassLoader() == nullptr) { - unload_libraries.push_back(library); - } + for (auto it = libraries_.begin(); it != libraries_.end(); ++it) { + SharedLibrary* const library = it->second; + if (library->GetClassLoader() == nullptr) { + unload_libraries.push_back(library); } } UnloadLibraries(vm, unload_libraries); @@ -508,6 +508,7 @@ JavaVMExt::JavaVMExt(Runtime* runtime, } JavaVMExt::~JavaVMExt() { + UnloadBootNativeLibraries(); } // Checking "globals" and "weak_globals" usually requires locks, but we |