summaryrefslogtreecommitdiff
path: root/runtime/jni/java_vm_ext.cc
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/jni/java_vm_ext.cc')
-rw-r--r--runtime/jni/java_vm_ext.cc17
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