diff options
author | 2017-05-25 11:22:18 -0700 | |
---|---|---|
committer | 2017-06-01 08:24:12 -0700 | |
commit | 87583b3de6e811e141f8c97c1f796eb516e8a751 (patch) | |
tree | 5b4688f306a2fda2f29bf319a8e1ff21309f93a3 | |
parent | 854461a4cd5e4a38debe3616e12b52fe7f160782 (diff) |
ART: Move RegisterNatives helper
Move the helper closer to the users.
Test: m test-art-host
Change-Id: Id05ce5f60af54d0c5aef0c7d8932706c4602fc94
32 files changed, 75 insertions, 20 deletions
diff --git a/runtime/jni_internal.cc b/runtime/jni_internal.cc index 0fde41bd4f..6f36cab529 100644 --- a/runtime/jni_internal.cc +++ b/runtime/jni_internal.cc @@ -3051,16 +3051,6 @@ const JNINativeInterface* GetRuntimeShutdownNativeInterface() { return reinterpret_cast<JNINativeInterface*>(&gJniSleepForeverStub); } -void RegisterNativeMethods(JNIEnv* env, const char* jni_class_name, const JNINativeMethod* methods, - jint method_count) { - ScopedLocalRef<jclass> c(env, env->FindClass(jni_class_name)); - if (c.get() == nullptr) { - LOG(FATAL) << "Couldn't find class: " << jni_class_name; - } - jint jni_result = env->RegisterNatives(c.get(), methods, method_count); - CHECK_EQ(JNI_OK, jni_result); -} - } // namespace art std::ostream& operator<<(std::ostream& os, const jobjectRefType& rhs) { diff --git a/runtime/jni_internal.h b/runtime/jni_internal.h index 24bee6fb1d..2c90b3ba78 100644 --- a/runtime/jni_internal.h +++ b/runtime/jni_internal.h @@ -22,9 +22,6 @@ #include "base/macros.h" -#define REGISTER_NATIVE_METHODS(jni_class_name) \ - RegisterNativeMethods(env, jni_class_name, gMethods, arraysize(gMethods)) - namespace art { class ArtField; @@ -33,11 +30,6 @@ class ArtMethod; const JNINativeInterface* GetJniNativeInterface(); const JNINativeInterface* GetRuntimeShutdownNativeInterface(); -// Similar to RegisterNatives except its passed a descriptor for a class name and failures are -// fatal. -void RegisterNativeMethods(JNIEnv* env, const char* jni_class_name, const JNINativeMethod* methods, - jint method_count); - int ThrowNewException(JNIEnv* env, jclass exception_class, const char* msg, jobject cause); namespace jni { diff --git a/runtime/native/dalvik_system_DexFile.cc b/runtime/native/dalvik_system_DexFile.cc index 870402d301..ad009668bf 100644 --- a/runtime/native/dalvik_system_DexFile.cc +++ b/runtime/native/dalvik_system_DexFile.cc @@ -31,6 +31,7 @@ #include "mirror/class_loader.h" #include "mirror/object-inl.h" #include "mirror/string.h" +#include "native_util.h" #include "oat_file.h" #include "oat_file_assistant.h" #include "oat_file_manager.h" diff --git a/runtime/native/dalvik_system_VMDebug.cc b/runtime/native/dalvik_system_VMDebug.cc index bb8233b9e8..e1eae21df9 100644 --- a/runtime/native/dalvik_system_VMDebug.cc +++ b/runtime/native/dalvik_system_VMDebug.cc @@ -39,6 +39,7 @@ #include "jni_internal.h" #include "mirror/class.h" #include "mirror/object_array-inl.h" +#include "native_util.h" #include "ScopedLocalRef.h" #include "ScopedUtfChars.h" #include "scoped_fast_native_object_access-inl.h" diff --git a/runtime/native/dalvik_system_VMRuntime.cc b/runtime/native/dalvik_system_VMRuntime.cc index 18b871cca3..fed9c1cf5b 100644 --- a/runtime/native/dalvik_system_VMRuntime.cc +++ b/runtime/native/dalvik_system_VMRuntime.cc @@ -52,6 +52,7 @@ extern "C" void android_set_application_target_sdk_version(uint32_t version); #include "mirror/class-inl.h" #include "mirror/dex_cache-inl.h" #include "mirror/object-inl.h" +#include "native_util.h" #include "runtime.h" #include "scoped_fast_native_object_access-inl.h" #include "scoped_thread_state_change-inl.h" diff --git a/runtime/native/dalvik_system_VMStack.cc b/runtime/native/dalvik_system_VMStack.cc index 6c41d515de..e86e64ed6a 100644 --- a/runtime/native/dalvik_system_VMStack.cc +++ b/runtime/native/dalvik_system_VMStack.cc @@ -25,6 +25,7 @@ #include "mirror/class-inl.h" #include "mirror/class_loader.h" #include "mirror/object-inl.h" +#include "native_util.h" #include "scoped_fast_native_object_access-inl.h" #include "scoped_thread_state_change-inl.h" #include "thread_list.h" diff --git a/runtime/native/dalvik_system_ZygoteHooks.cc b/runtime/native/dalvik_system_ZygoteHooks.cc index 4c6f53081a..cbf4f323a1 100644 --- a/runtime/native/dalvik_system_ZygoteHooks.cc +++ b/runtime/native/dalvik_system_ZygoteHooks.cc @@ -28,6 +28,7 @@ #include "jit/jit.h" #include "jni_internal.h" #include "JNIHelp.h" +#include "native_util.h" #include "non_debuggable_classes.h" #include "scoped_thread_state_change-inl.h" #include "ScopedUtfChars.h" diff --git a/runtime/native/java_lang_Class.cc b/runtime/native/java_lang_Class.cc index 9e07a5c1a4..d3377be393 100644 --- a/runtime/native/java_lang_Class.cc +++ b/runtime/native/java_lang_Class.cc @@ -36,6 +36,7 @@ #include "mirror/object-inl.h" #include "mirror/object_array-inl.h" #include "mirror/string-inl.h" +#include "native_util.h" #include "obj_ptr-inl.h" #include "reflection.h" #include "scoped_thread_state_change-inl.h" diff --git a/runtime/native/java_lang_Object.cc b/runtime/native/java_lang_Object.cc index c9841d1b23..d52bf0490b 100644 --- a/runtime/native/java_lang_Object.cc +++ b/runtime/native/java_lang_Object.cc @@ -20,6 +20,7 @@ #include "jni_internal.h" #include "mirror/object-inl.h" +#include "native_util.h" #include "scoped_fast_native_object_access-inl.h" namespace art { diff --git a/runtime/native/java_lang_String.cc b/runtime/native/java_lang_String.cc index 4928c01c96..ac0d6337b2 100644 --- a/runtime/native/java_lang_String.cc +++ b/runtime/native/java_lang_String.cc @@ -24,6 +24,7 @@ #include "mirror/object-inl.h" #include "mirror/string.h" #include "mirror/string-inl.h" +#include "native_util.h" #include "scoped_fast_native_object_access-inl.h" #include "scoped_thread_state_change-inl.h" #include "ScopedLocalRef.h" diff --git a/runtime/native/java_lang_StringFactory.cc b/runtime/native/java_lang_StringFactory.cc index c1292ef6c4..9c2e91843e 100644 --- a/runtime/native/java_lang_StringFactory.cc +++ b/runtime/native/java_lang_StringFactory.cc @@ -22,6 +22,7 @@ #include "jni_internal.h" #include "mirror/object-inl.h" #include "mirror/string.h" +#include "native_util.h" #include "scoped_fast_native_object_access-inl.h" #include "scoped_thread_state_change-inl.h" #include "ScopedLocalRef.h" diff --git a/runtime/native/java_lang_System.cc b/runtime/native/java_lang_System.cc index 264b427460..0e5d740cab 100644 --- a/runtime/native/java_lang_System.cc +++ b/runtime/native/java_lang_System.cc @@ -26,6 +26,7 @@ #include "mirror/class-inl.h" #include "mirror/object-inl.h" #include "mirror/object_array-inl.h" +#include "native_util.h" #include "scoped_fast_native_object_access-inl.h" namespace art { diff --git a/runtime/native/java_lang_Thread.cc b/runtime/native/java_lang_Thread.cc index f3254c4b18..e4d1705d28 100644 --- a/runtime/native/java_lang_Thread.cc +++ b/runtime/native/java_lang_Thread.cc @@ -22,6 +22,7 @@ #include "jni_internal.h" #include "monitor.h" #include "mirror/object.h" +#include "native_util.h" #include "scoped_fast_native_object_access-inl.h" #include "scoped_thread_state_change-inl.h" #include "ScopedUtfChars.h" diff --git a/runtime/native/java_lang_Throwable.cc b/runtime/native/java_lang_Throwable.cc index b69fbef8d8..03b7f9dfba 100644 --- a/runtime/native/java_lang_Throwable.cc +++ b/runtime/native/java_lang_Throwable.cc @@ -19,6 +19,7 @@ #include "nativehelper/jni_macros.h" #include "jni_internal.h" +#include "native_util.h" #include "scoped_fast_native_object_access-inl.h" #include "thread.h" diff --git a/runtime/native/java_lang_VMClassLoader.cc b/runtime/native/java_lang_VMClassLoader.cc index 55955e7c57..fc50d5584d 100644 --- a/runtime/native/java_lang_VMClassLoader.cc +++ b/runtime/native/java_lang_VMClassLoader.cc @@ -22,6 +22,7 @@ #include "jni_internal.h" #include "mirror/class_loader.h" #include "mirror/object-inl.h" +#include "native_util.h" #include "obj_ptr.h" #include "scoped_fast_native_object_access-inl.h" #include "ScopedLocalRef.h" diff --git a/runtime/native/java_lang_Void.cc b/runtime/native/java_lang_Void.cc index b0d63ef222..af83dd1a79 100644 --- a/runtime/native/java_lang_Void.cc +++ b/runtime/native/java_lang_Void.cc @@ -20,6 +20,7 @@ #include "class_linker-inl.h" #include "jni_internal.h" +#include "native_util.h" #include "runtime.h" #include "scoped_fast_native_object_access-inl.h" diff --git a/runtime/native/java_lang_invoke_MethodHandleImpl.cc b/runtime/native/java_lang_invoke_MethodHandleImpl.cc index 63168cec24..2e3b4d41ef 100644 --- a/runtime/native/java_lang_invoke_MethodHandleImpl.cc +++ b/runtime/native/java_lang_invoke_MethodHandleImpl.cc @@ -24,6 +24,7 @@ #include "mirror/field.h" #include "mirror/method.h" #include "mirror/method_handle_impl.h" +#include "native_util.h" #include "runtime.h" #include "scoped_thread_state_change-inl.h" diff --git a/runtime/native/java_lang_ref_FinalizerReference.cc b/runtime/native/java_lang_ref_FinalizerReference.cc index c75837aa96..72af5f7ea7 100644 --- a/runtime/native/java_lang_ref_FinalizerReference.cc +++ b/runtime/native/java_lang_ref_FinalizerReference.cc @@ -23,6 +23,7 @@ #include "jni_internal.h" #include "mirror/object-inl.h" #include "mirror/reference-inl.h" +#include "native_util.h" #include "scoped_fast_native_object_access-inl.h" namespace art { diff --git a/runtime/native/java_lang_ref_Reference.cc b/runtime/native/java_lang_ref_Reference.cc index 606e656f3c..524a18ca20 100644 --- a/runtime/native/java_lang_ref_Reference.cc +++ b/runtime/native/java_lang_ref_Reference.cc @@ -23,6 +23,7 @@ #include "jni_internal.h" #include "mirror/object-inl.h" #include "mirror/reference-inl.h" +#include "native_util.h" #include "scoped_fast_native_object_access-inl.h" namespace art { diff --git a/runtime/native/java_lang_reflect_Array.cc b/runtime/native/java_lang_reflect_Array.cc index 96623950aa..5be317147b 100644 --- a/runtime/native/java_lang_reflect_Array.cc +++ b/runtime/native/java_lang_reflect_Array.cc @@ -21,11 +21,12 @@ #include "class_linker-inl.h" #include "common_throws.h" #include "dex_file-inl.h" +#include "handle_scope-inl.h" #include "jni_internal.h" #include "mirror/class-inl.h" #include "mirror/object-inl.h" +#include "native_util.h" #include "scoped_fast_native_object_access-inl.h" -#include "handle_scope-inl.h" namespace art { diff --git a/runtime/native/java_lang_reflect_Constructor.cc b/runtime/native/java_lang_reflect_Constructor.cc index d1953adacf..242e87afa9 100644 --- a/runtime/native/java_lang_reflect_Constructor.cc +++ b/runtime/native/java_lang_reflect_Constructor.cc @@ -27,6 +27,7 @@ #include "mirror/class-inl.h" #include "mirror/method.h" #include "mirror/object-inl.h" +#include "native_util.h" #include "reflection.h" #include "scoped_fast_native_object_access-inl.h" #include "well_known_classes.h" diff --git a/runtime/native/java_lang_reflect_Executable.cc b/runtime/native/java_lang_reflect_Executable.cc index 256a3d04de..2aad12d3b8 100644 --- a/runtime/native/java_lang_reflect_Executable.cc +++ b/runtime/native/java_lang_reflect_Executable.cc @@ -27,6 +27,7 @@ #include "mirror/method.h" #include "mirror/object-inl.h" #include "mirror/object_array-inl.h" +#include "native_util.h" #include "reflection.h" #include "scoped_fast_native_object_access-inl.h" #include "well_known_classes.h" diff --git a/runtime/native/java_lang_reflect_Field.cc b/runtime/native/java_lang_reflect_Field.cc index e38bcd691a..f19004dab5 100644 --- a/runtime/native/java_lang_reflect_Field.cc +++ b/runtime/native/java_lang_reflect_Field.cc @@ -28,6 +28,7 @@ #include "jni_internal.h" #include "mirror/class-inl.h" #include "mirror/field.h" +#include "native_util.h" #include "reflection-inl.h" #include "scoped_fast_native_object_access-inl.h" #include "utils.h" diff --git a/runtime/native/java_lang_reflect_Method.cc b/runtime/native/java_lang_reflect_Method.cc index c9e8dba551..cbbb6a8ea3 100644 --- a/runtime/native/java_lang_reflect_Method.cc +++ b/runtime/native/java_lang_reflect_Method.cc @@ -27,6 +27,7 @@ #include "mirror/class-inl.h" #include "mirror/object-inl.h" #include "mirror/object_array-inl.h" +#include "native_util.h" #include "reflection.h" #include "scoped_fast_native_object_access-inl.h" #include "well_known_classes.h" diff --git a/runtime/native/java_lang_reflect_Parameter.cc b/runtime/native/java_lang_reflect_Parameter.cc index 92a7ac9836..c4ab5d69fc 100644 --- a/runtime/native/java_lang_reflect_Parameter.cc +++ b/runtime/native/java_lang_reflect_Parameter.cc @@ -24,6 +24,7 @@ #include "dex_file-inl.h" #include "dex_file_annotations.h" #include "jni_internal.h" +#include "native_util.h" #include "scoped_fast_native_object_access-inl.h" #include "utils.h" diff --git a/runtime/native/java_lang_reflect_Proxy.cc b/runtime/native/java_lang_reflect_Proxy.cc index 518aaa7317..691ed28b0b 100644 --- a/runtime/native/java_lang_reflect_Proxy.cc +++ b/runtime/native/java_lang_reflect_Proxy.cc @@ -23,6 +23,7 @@ #include "mirror/class_loader.h" #include "mirror/object_array.h" #include "mirror/string.h" +#include "native_util.h" #include "scoped_fast_native_object_access-inl.h" #include "verify_object.h" diff --git a/runtime/native/java_util_concurrent_atomic_AtomicLong.cc b/runtime/native/java_util_concurrent_atomic_AtomicLong.cc index 101f386ff8..bd4b0fec70 100644 --- a/runtime/native/java_util_concurrent_atomic_AtomicLong.cc +++ b/runtime/native/java_util_concurrent_atomic_AtomicLong.cc @@ -21,6 +21,7 @@ #include "arch/instruction_set.h" #include "atomic.h" #include "jni_internal.h" +#include "native_util.h" namespace art { diff --git a/runtime/native/libcore_util_CharsetUtils.cc b/runtime/native/libcore_util_CharsetUtils.cc index c388ea1438..38634e6d0c 100644 --- a/runtime/native/libcore_util_CharsetUtils.cc +++ b/runtime/native/libcore_util_CharsetUtils.cc @@ -23,6 +23,7 @@ #include "jni_internal.h" #include "mirror/string.h" #include "mirror/string-inl.h" +#include "native_util.h" #include "scoped_fast_native_object_access-inl.h" #include "ScopedPrimitiveArray.h" #include "unicode/utf16.h" diff --git a/runtime/native/native_util.h b/runtime/native/native_util.h new file mode 100644 index 0000000000..98384e0178 --- /dev/null +++ b/runtime/native/native_util.h @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ART_RUNTIME_NATIVE_NATIVE_UTIL_H_ +#define ART_RUNTIME_NATIVE_NATIVE_UTIL_H_ + +#include <jni.h> + +#include "android-base/logging.h" +#include "base/macros.h" +#include "ScopedLocalRef.h" + +namespace art { + +ALWAYS_INLINE inline void RegisterNativeMethodsInternal(JNIEnv* env, + const char* jni_class_name, + const JNINativeMethod* methods, + jint method_count) { + ScopedLocalRef<jclass> c(env, env->FindClass(jni_class_name)); + if (c.get() == nullptr) { + LOG(FATAL) << "Couldn't find class: " << jni_class_name; + } + jint jni_result = env->RegisterNatives(c.get(), methods, method_count); + CHECK_EQ(JNI_OK, jni_result); +} + +#define REGISTER_NATIVE_METHODS(jni_class_name) \ + RegisterNativeMethodsInternal(env, (jni_class_name), gMethods, arraysize(gMethods)) + +} // namespace art + +#endif // ART_RUNTIME_NATIVE_NATIVE_UTIL_H_ diff --git a/runtime/native/org_apache_harmony_dalvik_ddmc_DdmServer.cc b/runtime/native/org_apache_harmony_dalvik_ddmc_DdmServer.cc index a860977c4c..925b90931c 100644 --- a/runtime/native/org_apache_harmony_dalvik_ddmc_DdmServer.cc +++ b/runtime/native/org_apache_harmony_dalvik_ddmc_DdmServer.cc @@ -21,6 +21,7 @@ #include "base/logging.h" #include "debugger.h" #include "jni_internal.h" +#include "native_util.h" #include "scoped_fast_native_object_access-inl.h" #include "ScopedPrimitiveArray.h" diff --git a/runtime/native/org_apache_harmony_dalvik_ddmc_DdmVmInternal.cc b/runtime/native/org_apache_harmony_dalvik_ddmc_DdmVmInternal.cc index ac504ccaf6..18c6a9417a 100644 --- a/runtime/native/org_apache_harmony_dalvik_ddmc_DdmVmInternal.cc +++ b/runtime/native/org_apache_harmony_dalvik_ddmc_DdmVmInternal.cc @@ -22,6 +22,7 @@ #include "base/mutex.h" #include "debugger.h" #include "jni_internal.h" +#include "native_util.h" #include "scoped_fast_native_object_access-inl.h" #include "ScopedLocalRef.h" #include "ScopedPrimitiveArray.h" diff --git a/runtime/native/sun_misc_Unsafe.cc b/runtime/native/sun_misc_Unsafe.cc index b42cedfaf0..e78c9da5e5 100644 --- a/runtime/native/sun_misc_Unsafe.cc +++ b/runtime/native/sun_misc_Unsafe.cc @@ -29,9 +29,9 @@ #include "mirror/array.h" #include "mirror/class-inl.h" #include "mirror/object-inl.h" +#include "native_util.h" #include "scoped_fast_native_object_access-inl.h" - namespace art { static jboolean Unsafe_compareAndSwapInt(JNIEnv* env, jobject, jobject javaObj, jlong offset, |