Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(578)

Unified Diff: base/android/jni_generator/jni_generator_tests.py

Issue 11038015: Android: lazy initialization for method id. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Moves to MethodID Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: base/android/jni_generator/jni_generator_tests.py
diff --git a/base/android/jni_generator/jni_generator_tests.py b/base/android/jni_generator/jni_generator_tests.py
index ba9ee21331c52c7cd9068f159bb71502084fc443..d16618d163569dcfd703c3c91c7de263aa8e7a05 100755
--- a/base/android/jni_generator/jni_generator_tests.py
+++ b/base/android/jni_generator/jni_generator_tests.py
@@ -315,19 +315,16 @@ static void GotOrientation(JNIEnv* env, jobject obj,
jdouble gamma) {
DCHECK(nativeDataFetcherImplAndroid) << "GotOrientation";
DataFetcherImplAndroid* native =
- reinterpret_cast<DataFetcherImplAndroid*>(nativeDataFetcherImplAndroid);
+ reinterpret_cast<DataFetcherImplAndroid*>(nativeDataFetcherImplAndroid);
return native->GotOrientation(env, obj, alpha, beta, gamma);
}
-// Step 3: GetMethodIDs and RegisterNatives.
-static void GetMethodIDsImpl(JNIEnv* env) {
- g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
- base::android::GetUnscopedClass(env, kTestJniClassPath)));
-}
+// Step 3: RegisterNatives.
static bool RegisterNativesImpl(JNIEnv* env) {
- GetMethodIDsImpl(env);
+ g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
+ base::android::GetUnscopedClass(env, kTestJniClassPath)));
static const JNINativeMethod kMethodsTestJni[] = {
{ "nativeInit",
"("
@@ -481,15 +478,12 @@ static jint Init(JNIEnv* env, jobject obj);
// Step 2: method stubs.
-// Step 3: GetMethodIDs and RegisterNatives.
-static void GetMethodIDsImpl(JNIEnv* env) {
- g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
- base::android::GetUnscopedClass(env, kTestJniClassPath)));
-}
+// Step 3: RegisterNatives.
static bool RegisterNativesImpl(JNIEnv* env) {
- GetMethodIDsImpl(env);
+ g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
+ base::android::GetUnscopedClass(env, kTestJniClassPath)));
static const JNINativeMethod kMethodsMyInnerClass[] = {
{ "nativeInit",
"("
@@ -575,15 +569,12 @@ static jint Init(JNIEnv* env, jobject obj);
// Step 2: method stubs.
-// Step 3: GetMethodIDs and RegisterNatives.
-static void GetMethodIDsImpl(JNIEnv* env) {
- g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
- base::android::GetUnscopedClass(env, kTestJniClassPath)));
-}
+// Step 3: RegisterNatives.
static bool RegisterNativesImpl(JNIEnv* env) {
- GetMethodIDsImpl(env);
+ g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
+ base::android::GetUnscopedClass(env, kTestJniClassPath)));
static const JNINativeMethod kMethodsMyOtherInnerClass[] = {
{ "nativeInit",
"("
@@ -683,15 +674,12 @@ static jint Init(JNIEnv* env, jobject obj);
// Step 2: method stubs.
-// Step 3: GetMethodIDs and RegisterNatives.
-static void GetMethodIDsImpl(JNIEnv* env) {
- g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
- base::android::GetUnscopedClass(env, kTestJniClassPath)));
-}
+// Step 3: RegisterNatives.
static bool RegisterNativesImpl(JNIEnv* env) {
- GetMethodIDsImpl(env);
+ g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
+ base::android::GetUnscopedClass(env, kTestJniClassPath)));
static const JNINativeMethod kMethodsMyOtherInnerClass[] = {
{ "nativeInit",
"("
@@ -910,7 +898,7 @@ jclass g_InfoBar_clazz = NULL;
// Step 2: method stubs.
-static jmethodID g_TestJni_showConfirmInfoBar = 0;
+static base::subtle::AtomicWord g_TestJni_showConfirmInfoBar = 0;
static ScopedJavaLocalRef<jobject> Java_TestJni_showConfirmInfoBar(JNIEnv* env,
jobject obj, jint nativeInfoBar,
jstring buttonOk,
@@ -919,16 +907,32 @@ static ScopedJavaLocalRef<jobject> Java_TestJni_showConfirmInfoBar(JNIEnv* env,
jobject icon) {
/* Must call RegisterNativesImpl() */
DCHECK(g_TestJni_clazz);
- DCHECK(g_TestJni_showConfirmInfoBar);
+ jmethodID method_id =
+
+ base::android::MethodID::LazyGet<
+ base::android::MethodID::METHODTYPE_NORMAL,
+ base::android::MethodID::EXCEPTIONCHECK_YES>(
+ env, g_TestJni_clazz,
+ "showConfirmInfoBar",
+
+"("
+"I"
+"Ljava/lang/String;"
+"Ljava/lang/String;"
+"Ljava/lang/String;"
+"Landroid/graphics/Bitmap;"
+")"
+"Lcom/google/android/apps/chrome/infobar/InfoBarContainer$NativeInfoBar;",
+ &g_TestJni_showConfirmInfoBar);
+
jobject ret =
env->CallObjectMethod(obj,
- g_TestJni_showConfirmInfoBar, nativeInfoBar, buttonOk, buttonCancel,
- title, icon);
+ method_id, nativeInfoBar, buttonOk, buttonCancel, title, icon);
base::android::CheckException(env);
return ScopedJavaLocalRef<jobject>(env, ret);
}
-static jmethodID g_TestJni_showAutoLoginInfoBar = 0;
+static base::subtle::AtomicWord g_TestJni_showAutoLoginInfoBar = 0;
static ScopedJavaLocalRef<jobject> Java_TestJni_showAutoLoginInfoBar(JNIEnv*
env, jobject obj, jint nativeInfoBar,
jstring realm,
@@ -936,27 +940,54 @@ static ScopedJavaLocalRef<jobject> Java_TestJni_showAutoLoginInfoBar(JNIEnv*
jstring args) {
/* Must call RegisterNativesImpl() */
DCHECK(g_TestJni_clazz);
- DCHECK(g_TestJni_showAutoLoginInfoBar);
+ jmethodID method_id =
+
+ base::android::MethodID::LazyGet<
+ base::android::MethodID::METHODTYPE_NORMAL,
+ base::android::MethodID::EXCEPTIONCHECK_YES>(
+ env, g_TestJni_clazz,
+ "showAutoLoginInfoBar",
+
+"("
+"I"
+"Ljava/lang/String;"
+"Ljava/lang/String;"
+"Ljava/lang/String;"
+")"
+"Lcom/google/android/apps/chrome/infobar/InfoBarContainer$NativeInfoBar;",
+ &g_TestJni_showAutoLoginInfoBar);
+
jobject ret =
env->CallObjectMethod(obj,
- g_TestJni_showAutoLoginInfoBar, nativeInfoBar, realm, account, args);
+ method_id, nativeInfoBar, realm, account, args);
base::android::CheckException(env);
return ScopedJavaLocalRef<jobject>(env, ret);
}
-static jmethodID g_InfoBar_dismiss = 0;
+static base::subtle::AtomicWord g_InfoBar_dismiss = 0;
static void Java_InfoBar_dismiss(JNIEnv* env, jobject obj) {
/* Must call RegisterNativesImpl() */
DCHECK(g_InfoBar_clazz);
- DCHECK(g_InfoBar_dismiss);
+ jmethodID method_id =
+
+ base::android::MethodID::LazyGet<
+ base::android::MethodID::METHODTYPE_NORMAL,
+ base::android::MethodID::EXCEPTIONCHECK_YES>(
+ env, g_InfoBar_clazz,
+ "dismiss",
+
+"("
+")"
+"V",
+ &g_InfoBar_dismiss);
env->CallVoidMethod(obj,
- g_InfoBar_dismiss);
+ method_id);
base::android::CheckException(env);
}
-static jmethodID g_TestJni_shouldShowAutoLogin = 0;
+static base::subtle::AtomicWord g_TestJni_shouldShowAutoLogin = 0;
static jboolean Java_TestJni_shouldShowAutoLogin(JNIEnv* env, jobject
contentView,
jstring realm,
@@ -964,28 +995,57 @@ static jboolean Java_TestJni_shouldShowAutoLogin(JNIEnv* env, jobject
jstring args) {
/* Must call RegisterNativesImpl() */
DCHECK(g_TestJni_clazz);
- DCHECK(g_TestJni_shouldShowAutoLogin);
+ jmethodID method_id =
+
+ base::android::MethodID::LazyGet<
+ base::android::MethodID::METHODTYPE_STATIC,
+ base::android::MethodID::EXCEPTIONCHECK_YES>(
+ env, g_TestJni_clazz,
+ "shouldShowAutoLogin",
+
+"("
+"Lorg/chromium/content/browser/ContentViewCore;"
+"Ljava/lang/String;"
+"Ljava/lang/String;"
+"Ljava/lang/String;"
+")"
+"Z",
+ &g_TestJni_shouldShowAutoLogin);
+
jboolean ret =
env->CallStaticBooleanMethod(g_TestJni_clazz,
- g_TestJni_shouldShowAutoLogin, contentView, realm, account, args);
+ method_id, contentView, realm, account, args);
base::android::CheckException(env);
return ret;
}
-static jmethodID g_TestJni_openUrl = 0;
+static base::subtle::AtomicWord g_TestJni_openUrl = 0;
static ScopedJavaLocalRef<jobject> Java_TestJni_openUrl(JNIEnv* env, jstring
url) {
/* Must call RegisterNativesImpl() */
DCHECK(g_TestJni_clazz);
- DCHECK(g_TestJni_openUrl);
+ jmethodID method_id =
+
+ base::android::MethodID::LazyGet<
+ base::android::MethodID::METHODTYPE_STATIC,
+ base::android::MethodID::EXCEPTIONCHECK_YES>(
+ env, g_TestJni_clazz,
+ "openUrl",
+
+"("
+"Ljava/lang/String;"
+")"
+"Ljava/io/InputStream;",
+ &g_TestJni_openUrl);
+
jobject ret =
env->CallStaticObjectMethod(g_TestJni_clazz,
- g_TestJni_openUrl, url);
+ method_id, url);
base::android::CheckException(env);
return ScopedJavaLocalRef<jobject>(env, ret);
}
-static jmethodID g_TestJni_activateHardwareAcceleration = 0;
+static base::subtle::AtomicWord g_TestJni_activateHardwareAcceleration = 0;
static void Java_TestJni_activateHardwareAcceleration(JNIEnv* env, jobject obj,
jboolean activated,
jint iPid,
@@ -994,120 +1054,61 @@ static void Java_TestJni_activateHardwareAcceleration(JNIEnv* env, jobject obj,
jint iSecondaryID) {
/* Must call RegisterNativesImpl() */
DCHECK(g_TestJni_clazz);
- DCHECK(g_TestJni_activateHardwareAcceleration);
-
- env->CallVoidMethod(obj,
- g_TestJni_activateHardwareAcceleration, activated, iPid, iType,
- iPrimaryID, iSecondaryID);
- base::android::CheckException(env);
+ jmethodID method_id =
-}
-
-static jmethodID g_TestJni_uncheckedCall = 0;
-static void Java_TestJni_uncheckedCall(JNIEnv* env, jobject obj, jint iParam) {
- /* Must call RegisterNativesImpl() */
- DCHECK(g_TestJni_clazz);
- DCHECK(g_TestJni_uncheckedCall);
-
- env->CallVoidMethod(obj,
- g_TestJni_uncheckedCall, iParam);
-
-}
-
-// Step 3: GetMethodIDs and RegisterNatives.
-static void GetMethodIDsImpl(JNIEnv* env) {
- g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
- base::android::GetUnscopedClass(env, kTestJniClassPath)));
- g_InfoBar_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
- base::android::GetUnscopedClass(env, kInfoBarClassPath)));
- g_TestJni_showConfirmInfoBar =
- base::android::GetMethodID(
- env, g_TestJni_clazz,
- "showConfirmInfoBar",
+ base::android::MethodID::LazyGet<
+ base::android::MethodID::METHODTYPE_NORMAL,
+ base::android::MethodID::EXCEPTIONCHECK_YES>(
+ env, g_TestJni_clazz,
+ "activateHardwareAcceleration",
"("
+"Z"
+"I"
+"I"
"I"
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"Landroid/graphics/Bitmap;"
-")"
-"Lcom/google/android/apps/chrome/infobar/InfoBarContainer$NativeInfoBar;");
-
- g_TestJni_showAutoLoginInfoBar =
- base::android::GetMethodID(
- env, g_TestJni_clazz,
- "showAutoLoginInfoBar",
-
-"("
"I"
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-")"
-"Lcom/google/android/apps/chrome/infobar/InfoBarContainer$NativeInfoBar;");
-
- g_InfoBar_dismiss =
- base::android::GetMethodID(
- env, g_InfoBar_clazz,
- "dismiss",
-
-"("
")"
-"V");
+"V",
+ &g_TestJni_activateHardwareAcceleration);
- g_TestJni_shouldShowAutoLogin =
- base::android::GetStaticMethodID(
- env, g_TestJni_clazz,
- "shouldShowAutoLogin",
-
-"("
-"Lorg/chromium/content/browser/ContentViewCore;"
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-"Ljava/lang/String;"
-")"
-"Z");
+ env->CallVoidMethod(obj,
+ method_id, activated, iPid, iType, iPrimaryID, iSecondaryID);
+ base::android::CheckException(env);
- g_TestJni_openUrl =
- base::android::GetStaticMethodID(
- env, g_TestJni_clazz,
- "openUrl",
+}
-"("
-"Ljava/lang/String;"
-")"
-"Ljava/io/InputStream;");
+static base::subtle::AtomicWord g_TestJni_uncheckedCall = 0;
+static void Java_TestJni_uncheckedCall(JNIEnv* env, jobject obj, jint iParam) {
+ /* Must call RegisterNativesImpl() */
+ DCHECK(g_TestJni_clazz);
+ jmethodID method_id =
- g_TestJni_activateHardwareAcceleration =
- base::android::GetMethodID(
- env, g_TestJni_clazz,
- "activateHardwareAcceleration",
+ base::android::MethodID::LazyGet<
+ base::android::MethodID::METHODTYPE_NORMAL,
+ base::android::MethodID::EXCEPTIONCHECK_YES>(
+ env, g_TestJni_clazz,
+ "uncheckedCall",
"("
-"Z"
-"I"
-"I"
-"I"
"I"
")"
-"V");
-
- g_TestJni_uncheckedCall =
- base::android::GetMethodID(
- env, g_TestJni_clazz,
- "uncheckedCall",
+"V",
+ &g_TestJni_uncheckedCall);
-"("
-"I"
-")"
-"V");
+ env->CallVoidMethod(obj,
+ method_id, iParam);
}
+// Step 3: RegisterNatives.
+
static bool RegisterNativesImpl(JNIEnv* env) {
- GetMethodIDsImpl(env);
+ g_TestJni_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
+ base::android::GetUnscopedClass(env, kTestJniClassPath)));
+ g_InfoBar_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
+ base::android::GetUnscopedClass(env, kInfoBarClassPath)));
return true;
}
@@ -1217,91 +1218,163 @@ namespace JNI_InputStream {
// Step 2: method stubs.
-static jmethodID g_InputStream_available = 0;
+static base::subtle::AtomicWord g_InputStream_available = 0;
static jint Java_InputStream_available(JNIEnv* env, jobject obj) __attribute__
((unused));
static jint Java_InputStream_available(JNIEnv* env, jobject obj) {
/* Must call RegisterNativesImpl() */
DCHECK(g_InputStream_clazz);
- DCHECK(g_InputStream_available);
+ jmethodID method_id =
+
+ base::android::MethodID::LazyGet<
+ base::android::MethodID::METHODTYPE_NORMAL,
+ base::android::MethodID::EXCEPTIONCHECK_NO>(
+ env, g_InputStream_clazz,
+ "available",
+
+"("
+")"
+"I",
+ &g_InputStream_available);
+
jint ret =
env->CallIntMethod(obj,
- g_InputStream_available);
+ method_id);
base::android::CheckException(env);
return ret;
}
-static jmethodID g_InputStream_close = 0;
+static base::subtle::AtomicWord g_InputStream_close = 0;
static void Java_InputStream_close(JNIEnv* env, jobject obj) __attribute__
((unused));
static void Java_InputStream_close(JNIEnv* env, jobject obj) {
/* Must call RegisterNativesImpl() */
DCHECK(g_InputStream_clazz);
- DCHECK(g_InputStream_close);
+ jmethodID method_id =
+
+ base::android::MethodID::LazyGet<
+ base::android::MethodID::METHODTYPE_NORMAL,
+ base::android::MethodID::EXCEPTIONCHECK_NO>(
+ env, g_InputStream_clazz,
+ "close",
+
+"("
+")"
+"V",
+ &g_InputStream_close);
env->CallVoidMethod(obj,
- g_InputStream_close);
+ method_id);
base::android::CheckException(env);
}
-static jmethodID g_InputStream_mark = 0;
+static base::subtle::AtomicWord g_InputStream_mark = 0;
static void Java_InputStream_mark(JNIEnv* env, jobject obj, jint p0)
__attribute__ ((unused));
static void Java_InputStream_mark(JNIEnv* env, jobject obj, jint p0) {
/* Must call RegisterNativesImpl() */
DCHECK(g_InputStream_clazz);
- DCHECK(g_InputStream_mark);
+ jmethodID method_id =
+
+ base::android::MethodID::LazyGet<
+ base::android::MethodID::METHODTYPE_NORMAL,
+ base::android::MethodID::EXCEPTIONCHECK_NO>(
+ env, g_InputStream_clazz,
+ "mark",
+
+"("
+"I"
+")"
+"V",
+ &g_InputStream_mark);
env->CallVoidMethod(obj,
- g_InputStream_mark, p0);
+ method_id, p0);
base::android::CheckException(env);
}
-static jmethodID g_InputStream_markSupported = 0;
+static base::subtle::AtomicWord g_InputStream_markSupported = 0;
static jboolean Java_InputStream_markSupported(JNIEnv* env, jobject obj)
__attribute__ ((unused));
static jboolean Java_InputStream_markSupported(JNIEnv* env, jobject obj) {
/* Must call RegisterNativesImpl() */
DCHECK(g_InputStream_clazz);
- DCHECK(g_InputStream_markSupported);
+ jmethodID method_id =
+
+ base::android::MethodID::LazyGet<
+ base::android::MethodID::METHODTYPE_NORMAL,
+ base::android::MethodID::EXCEPTIONCHECK_NO>(
+ env, g_InputStream_clazz,
+ "markSupported",
+
+"("
+")"
+"Z",
+ &g_InputStream_markSupported);
+
jboolean ret =
env->CallBooleanMethod(obj,
- g_InputStream_markSupported);
+ method_id);
base::android::CheckException(env);
return ret;
}
-static jmethodID g_InputStream_readI = 0;
+static base::subtle::AtomicWord g_InputStream_readI = 0;
static jint Java_InputStream_readI(JNIEnv* env, jobject obj) __attribute__
((unused));
static jint Java_InputStream_readI(JNIEnv* env, jobject obj) {
/* Must call RegisterNativesImpl() */
DCHECK(g_InputStream_clazz);
- DCHECK(g_InputStream_readI);
+ jmethodID method_id =
+
+ base::android::MethodID::LazyGet<
+ base::android::MethodID::METHODTYPE_NORMAL,
+ base::android::MethodID::EXCEPTIONCHECK_NO>(
+ env, g_InputStream_clazz,
+ "read",
+
+"("
+")"
+"I",
+ &g_InputStream_readI);
+
jint ret =
env->CallIntMethod(obj,
- g_InputStream_readI);
+ method_id);
base::android::CheckException(env);
return ret;
}
-static jmethodID g_InputStream_readI_AB = 0;
+static base::subtle::AtomicWord g_InputStream_readI_AB = 0;
static jint Java_InputStream_readI_AB(JNIEnv* env, jobject obj, jbyteArray p0)
__attribute__ ((unused));
static jint Java_InputStream_readI_AB(JNIEnv* env, jobject obj, jbyteArray p0) {
/* Must call RegisterNativesImpl() */
DCHECK(g_InputStream_clazz);
- DCHECK(g_InputStream_readI_AB);
+ jmethodID method_id =
+
+ base::android::MethodID::LazyGet<
+ base::android::MethodID::METHODTYPE_NORMAL,
+ base::android::MethodID::EXCEPTIONCHECK_NO>(
+ env, g_InputStream_clazz,
+ "read",
+
+"("
+"[B"
+")"
+"I",
+ &g_InputStream_readI_AB);
+
jint ret =
env->CallIntMethod(obj,
- g_InputStream_readI_AB, p0);
+ method_id, p0);
base::android::CheckException(env);
return ret;
}
-static jmethodID g_InputStream_readI_AB_I_I = 0;
+static base::subtle::AtomicWord g_InputStream_readI_AB_I_I = 0;
static jint Java_InputStream_readI_AB_I_I(JNIEnv* env, jobject obj, jbyteArray
p0,
jint p1,
@@ -1312,161 +1385,113 @@ static jint Java_InputStream_readI_AB_I_I(JNIEnv* env, jobject obj, jbyteArray
jint p2) {
/* Must call RegisterNativesImpl() */
DCHECK(g_InputStream_clazz);
- DCHECK(g_InputStream_readI_AB_I_I);
+ jmethodID method_id =
+
+ base::android::MethodID::LazyGet<
+ base::android::MethodID::METHODTYPE_NORMAL,
+ base::android::MethodID::EXCEPTIONCHECK_NO>(
+ env, g_InputStream_clazz,
+ "read",
+
+"("
+"[B"
+"I"
+"I"
+")"
+"I",
+ &g_InputStream_readI_AB_I_I);
+
jint ret =
env->CallIntMethod(obj,
- g_InputStream_readI_AB_I_I, p0, p1, p2);
+ method_id, p0, p1, p2);
base::android::CheckException(env);
return ret;
}
-static jmethodID g_InputStream_reset = 0;
+static base::subtle::AtomicWord g_InputStream_reset = 0;
static void Java_InputStream_reset(JNIEnv* env, jobject obj) __attribute__
((unused));
static void Java_InputStream_reset(JNIEnv* env, jobject obj) {
/* Must call RegisterNativesImpl() */
DCHECK(g_InputStream_clazz);
- DCHECK(g_InputStream_reset);
+ jmethodID method_id =
+
+ base::android::MethodID::LazyGet<
+ base::android::MethodID::METHODTYPE_NORMAL,
+ base::android::MethodID::EXCEPTIONCHECK_NO>(
+ env, g_InputStream_clazz,
+ "reset",
+
+"("
+")"
+"V",
+ &g_InputStream_reset);
env->CallVoidMethod(obj,
- g_InputStream_reset);
+ method_id);
base::android::CheckException(env);
}
-static jmethodID g_InputStream_skip = 0;
+static base::subtle::AtomicWord g_InputStream_skip = 0;
static jlong Java_InputStream_skip(JNIEnv* env, jobject obj, jlong p0)
__attribute__ ((unused));
static jlong Java_InputStream_skip(JNIEnv* env, jobject obj, jlong p0) {
/* Must call RegisterNativesImpl() */
DCHECK(g_InputStream_clazz);
- DCHECK(g_InputStream_skip);
+ jmethodID method_id =
+
+ base::android::MethodID::LazyGet<
+ base::android::MethodID::METHODTYPE_NORMAL,
+ base::android::MethodID::EXCEPTIONCHECK_NO>(
+ env, g_InputStream_clazz,
+ "skip",
+
+"("
+"J"
+")"
+"J",
+ &g_InputStream_skip);
+
jlong ret =
env->CallLongMethod(obj,
- g_InputStream_skip, p0);
+ method_id, p0);
base::android::CheckException(env);
return ret;
}
-static jmethodID g_InputStream_Constructor = 0;
+static base::subtle::AtomicWord g_InputStream_Constructor = 0;
static ScopedJavaLocalRef<jobject> Java_InputStream_Constructor(JNIEnv* env)
-__attribute__ ((unused));
+ __attribute__ ((unused));
static ScopedJavaLocalRef<jobject> Java_InputStream_Constructor(JNIEnv* env) {
/* Must call RegisterNativesImpl() */
DCHECK(g_InputStream_clazz);
- DCHECK(g_InputStream_Constructor);
- jobject ret =
- env->NewObject(g_InputStream_clazz,
- g_InputStream_Constructor);
- base::android::CheckException(env);
- return ScopedJavaLocalRef<jobject>(env, ret);
-}
+ jmethodID method_id =
-// Step 3: GetMethodIDs and RegisterNatives.
-static void GetMethodIDsImpl(JNIEnv* env) {
- g_InputStream_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
- base::android::GetUnscopedClass(env, kInputStreamClassPath)));
- g_InputStream_available =
- base::android::GetMethodIDOrNull(
- env, g_InputStream_clazz,
- "available",
+ base::android::MethodID::LazyGet<
+ base::android::MethodID::METHODTYPE_NORMAL,
+ base::android::MethodID::EXCEPTIONCHECK_NO>(
+ env, g_InputStream_clazz,
+ "<init>",
"("
")"
-"I");
-
- g_InputStream_close =
- base::android::GetMethodIDOrNull(
- env, g_InputStream_clazz,
- "close",
-
-"("
-")"
-"V");
-
- g_InputStream_mark =
- base::android::GetMethodIDOrNull(
- env, g_InputStream_clazz,
- "mark",
-
-"("
-"I"
-")"
-"V");
-
- g_InputStream_markSupported =
- base::android::GetMethodIDOrNull(
- env, g_InputStream_clazz,
- "markSupported",
-
-"("
-")"
-"Z");
-
- g_InputStream_readI =
- base::android::GetMethodIDOrNull(
- env, g_InputStream_clazz,
- "read",
-
-"("
-")"
-"I");
-
- g_InputStream_readI_AB =
- base::android::GetMethodIDOrNull(
- env, g_InputStream_clazz,
- "read",
-
-"("
-"[B"
-")"
-"I");
-
- g_InputStream_readI_AB_I_I =
- base::android::GetMethodIDOrNull(
- env, g_InputStream_clazz,
- "read",
-
-"("
-"[B"
-"I"
-"I"
-")"
-"I");
-
- g_InputStream_reset =
- base::android::GetMethodIDOrNull(
- env, g_InputStream_clazz,
- "reset",
-
-"("
-")"
-"V");
-
- g_InputStream_skip =
- base::android::GetMethodIDOrNull(
- env, g_InputStream_clazz,
- "skip",
-
-"("
-"J"
-")"
-"J");
-
- g_InputStream_Constructor =
- base::android::GetMethodIDOrNull(
- env, g_InputStream_clazz,
- "<init>",
-
-"("
-")"
-"V");
+"V",
+ &g_InputStream_Constructor);
+ jobject ret =
+ env->NewObject(g_InputStream_clazz,
+ method_id);
+ base::android::CheckException(env);
+ return ScopedJavaLocalRef<jobject>(env, ret);
}
+// Step 3: RegisterNatives.
+
static bool RegisterNativesImpl(JNIEnv* env) {
- GetMethodIDsImpl(env);
+ g_InputStream_clazz = reinterpret_cast<jclass>(env->NewGlobalRef(
+ base::android::GetUnscopedClass(env, kInputStreamClassPath)));
return true;
}
} // namespace JNI_InputStream

Powered by Google App Engine
This is Rietveld 408576698