OSDN Git Service

Always setup the native bridge library
authorCalin Juravle <calin@google.com>
Fri, 22 Aug 2014 11:53:59 +0000 (12:53 +0100)
committerCalin Juravle <calin@google.com>
Fri, 22 Aug 2014 17:04:44 +0000 (18:04 +0100)
... even if the string is empty. This will initialize the native bridge
library but mark it as unavailable.

- also, rename native_bridge_library_path to
native_bridge_library_filename to be closer to the actual meaning (it's
just the filename without any path).

Bug: 16404669

(cherry picked from commit I94628639691459d48d1fbf0841f36b68d51818e7)

Change-Id: I94628639691459d48d1fbf0841f36b68d51818e7

runtime/parsed_options.cc
runtime/parsed_options.h
runtime/runtime.cc
runtime/runtime.h

index 26360d7..97332fc 100644 (file)
@@ -613,7 +613,7 @@ bool ParsedOptions::Parse(const RuntimeOptions& options, bool ignore_unrecognize
         return false;
       }
     } else if (StartsWith(option, "-XX:NativeBridge=")) {
-      if (!ParseStringAfterChar(option, '=', &native_bridge_library_path_)) {
+      if (!ParseStringAfterChar(option, '=', &native_bridge_library_filename_)) {
         return false;
       }
     } else if (StartsWith(option, "-ea") ||
index 1afd610..5c71f98 100644 (file)
@@ -46,7 +46,7 @@ class ParsedOptions {
   bool check_jni_;
   bool force_copy_;
   std::string jni_trace_;
-  std::string native_bridge_library_path_;
+  std::string native_bridge_library_filename_;
   CompilerCallbacks* compiler_callbacks_;
   bool is_zygote_;
   bool must_relocate_;
index ee8cbe1..84df444 100644 (file)
@@ -712,11 +712,12 @@ bool Runtime::Init(const RuntimeOptions& raw_options, bool ignore_unrecognized)
   self->ClearException();
 
   // Look for a native bridge.
-  native_bridge_library_path_ = options->native_bridge_library_path_;
-  if (!native_bridge_library_path_.empty()) {
-    android::SetupNativeBridge(native_bridge_library_path_.c_str(), &native_bridge_art_callbacks_);
-    VLOG(startup) << "Runtime::Setup native bridge library: " << native_bridge_library_path_;
-  }
+  native_bridge_library_filename_ = options->native_bridge_library_filename_;
+  android::SetupNativeBridge(native_bridge_library_filename_.c_str(), &native_bridge_art_callbacks_);
+  VLOG(startup) << "Runtime::Setup native bridge library: "
+                << (native_bridge_library_filename_.empty() ?
+                    "(empty)" : native_bridge_library_filename_);
+
   VLOG(startup) << "Runtime::Init exiting";
   return true;
 }
index 34ccdcb..259691a 100644 (file)
@@ -617,13 +617,14 @@ class Runtime {
   bool implicit_so_checks_;         // StackOverflow checks are implicit.
   bool implicit_suspend_checks_;    // Thread suspension checks are implicit.
 
-  // The path to the native bridge library. If this is not empty the native bridge will be
-  // initialized and loaded from the pointed path.
+  // The filename to the native bridge library. If this is not empty the native bridge will be
+  // initialized and loaded from the given file (initialized and available). An empty value means
+  // that there's no native bridge (initialized but not available).
   //
   // The native bridge allows running native code compiled for a foreign ISA. The way it works is,
   // if standard dlopen fails to load native library associated with native activity, it calls to
   // the native bridge to load it and then gets the trampoline for the entry to native activity.
-  std::string native_bridge_library_path_;
+  std::string native_bridge_library_filename_;
 
   // Native bridge library runtime callbacks. They represent the runtime interface to native bridge.
   //