From d5bbadf44032510b1ce12d9e5f2adad9234cf6b9 Mon Sep 17 00:00:00 2001 From: Dimitry Ivanov Date: Tue, 15 Dec 2015 14:08:18 -0800 Subject: Use shared namespaces for bundled apps Shared namespaces clone the list of loaded native libraries from the caller namespace. This allows classloaders for bundled apps to share already loaded libraries with default namespace. Bug: http://b/26165097 Bug: http://b/22548808 Change-Id: Ia90b603a0ca97194618b82fb191d6790a4b1f281 (cherry picked from commit 986f650d8b552e8b7dbebef1f50f015e7850edfc) --- runtime/java_vm_ext.cc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'runtime/java_vm_ext.cc') diff --git a/runtime/java_vm_ext.cc b/runtime/java_vm_ext.cc index 15f51220e4..5c4419333b 100644 --- a/runtime/java_vm_ext.cc +++ b/runtime/java_vm_ext.cc @@ -717,8 +717,8 @@ void JavaVMExt::UnloadNativeLibraries() { } bool JavaVMExt::LoadNativeLibrary(JNIEnv* env, const std::string& path, jobject class_loader, - jstring library_path, jstring permitted_path, - std::string* error_msg) { + bool is_shared_namespace, jstring library_path, + jstring permitted_path, std::string* error_msg) { error_msg->clear(); // See if we've already loaded this library. If we have, and the class loader @@ -777,8 +777,9 @@ bool JavaVMExt::LoadNativeLibrary(JNIEnv* env, const std::string& path, jobject Locks::mutator_lock_->AssertNotHeld(self); const char* path_str = path.empty() ? nullptr : path.c_str(); - void* handle = android::OpenNativeLibrary(env, runtime_->GetTargetSdkVersion(), - path_str, class_loader, library_path, permitted_path); + void* handle = android::OpenNativeLibrary(env, runtime_->GetTargetSdkVersion(), path_str, + class_loader, is_shared_namespace, library_path, + permitted_path); bool needs_native_bridge = false; if (handle == nullptr) { if (android::NativeBridgeIsSupported(path_str)) { -- cgit v1.2.3-59-g8ed1b