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

Side by Side Diff: base/android/jni_generator/golden_sample_for_tests_jni.h

Issue 2531273002: android: Realign stack pointer on JNI entry. (Closed)
Patch Set: Rename golden test file to satisfy presubmit Created 4 years 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // This file is autogenerated by
6 // base/android/jni_generator/jni_generator.py
7 // For
8 // org/chromium/example/jni_generator/SampleForTests
9
10 #ifndef org_chromium_example_jni_generator_SampleForTests_JNI
11 #define org_chromium_example_jni_generator_SampleForTests_JNI
12
13 #include <jni.h>
14
15 #include "base/android/jni_generator/jni_generator_helper.h"
16
17 #include "base/android/jni_int_wrapper.h"
18
19 // Step 1: forward declarations.
20 namespace {
21 const char kInnerStructAClassPath[] =
22 "org/chromium/example/jni_generator/SampleForTests$InnerStructA";
23 const char kInnerClassClassPath[] =
24 "org/chromium/example/jni_generator/SampleForTests$InnerClass";
25 const char kSampleForTestsClassPath[] =
26 "org/chromium/example/jni_generator/SampleForTests";
27 const char kInnerStructBClassPath[] =
28 "org/chromium/example/jni_generator/SampleForTests$InnerStructB";
29 // Leaking this jclass as we cannot use LazyInstance from some threads.
30 base::subtle::AtomicWord g_InnerStructA_clazz __attribute__((unused)) = 0;
31 #define InnerStructA_clazz(env) base::android::LazyGetClass(env, kInnerStructACl assPath, &g_InnerStructA_clazz)
32 // Leaking this jclass as we cannot use LazyInstance from some threads.
33 base::subtle::AtomicWord g_InnerClass_clazz __attribute__((unused)) = 0;
34 #define InnerClass_clazz(env) base::android::LazyGetClass(env, kInnerClassClassP ath, &g_InnerClass_clazz)
35 // Leaking this jclass as we cannot use LazyInstance from some threads.
36 base::subtle::AtomicWord g_SampleForTests_clazz __attribute__((unused)) = 0;
37 #define SampleForTests_clazz(env) base::android::LazyGetClass(env, kSampleForTes tsClassPath, &g_SampleForTests_clazz)
38 // Leaking this jclass as we cannot use LazyInstance from some threads.
39 base::subtle::AtomicWord g_InnerStructB_clazz __attribute__((unused)) = 0;
40 #define InnerStructB_clazz(env) base::android::LazyGetClass(env, kInnerStructBCl assPath, &g_InnerStructB_clazz)
41
42 } // namespace
43
44 namespace base {
45 namespace android {
46
47 // Step 2: method stubs.
48
49 static jlong Init(JNIEnv* env, const base::android::JavaParamRef<jobject>&
50 jcaller,
51 const base::android::JavaParamRef<jstring>& param);
52
53 extern "C" __attribute__((visibility("default")))
54 jlong Java_org_chromium_example_jni_1generator_SampleForTests_nativeInit(JNIEnv*
55 env, jobject jcaller,
56 jstring param) {
57 return Init(env, base::android::JavaParamRef<jobject>(env, jcaller),
58 base::android::JavaParamRef<jstring>(env, param));
59 }
60
61 extern "C" __attribute__((visibility("default")))
62 void
63 Java_org_chromium_example_jni_1generator_SampleForTests_nativeDestroy(JNIEnv *
64 env,
65 jobject jcaller,
66 jlong nativeCPPClass) {
67 CPPClass* native = reinterpret_cast<CPPClass*>(nativeCPPClass);
68 CHECK_NATIVE_PTR(env, jcaller, native, "Destroy");
69 return native->Destroy(env, base::android::JavaParamRef<jobject>(env,
70 jcaller));
71 }
72
73 static jdouble GetDoubleFunction(JNIEnv* env, const
74 base::android::JavaParamRef<jobject>& jcaller);
75
76 extern "C" __attribute__((visibility("default")))
77 jdouble
78 Java_org_chromium_example_jni_1generator_SampleForTests_nativeGetDoubleFunct ion(JNIEnv*
79 env, jobject jcaller) {
80 return GetDoubleFunction(env, base::android::JavaParamRef<jobject>(env,
81 jcaller));
82 }
83
84 static jfloat GetFloatFunction(JNIEnv* env, const
85 base::android::JavaParamRef<jclass>& jcaller);
86
87 extern "C" __attribute__((visibility("default")))
88 jfloat
89 Java_org_chromium_example_jni_1generator_SampleForTests_nativeGetFloatFuncti on(JNIEnv*
90 env, jclass jcaller) {
91 return GetFloatFunction(env, base::android::JavaParamRef<jclass>(env,
92 jcaller));
93 }
94
95 static void SetNonPODDatatype(JNIEnv* env, const
96 base::android::JavaParamRef<jobject>& jcaller,
97 const base::android::JavaParamRef<jobject>& rect);
98
99 extern "C" __attribute__((visibility("default")))
100 void
101 Java_org_chromium_example_jni_1generator_SampleForTests_nativeSetNonPODDatat ype(JNIEnv*
102 env, jobject jcaller,
103 jobject rect) {
104 return SetNonPODDatatype(env, base::android::JavaParamRef<jobject>(env,
105 jcaller), base::android::JavaParamRef<jobject>(env, rect));
106 }
107
108 static base::android::ScopedJavaLocalRef<jobject> GetNonPODDatatype(JNIEnv* env,
109 const base::android::JavaParamRef<jobject>& jcaller);
110
111 extern "C" __attribute__((visibility("default")))
112 jobject
113 Java_org_chromium_example_jni_1generator_SampleForTests_nativeGetNonPODDatat ype(JNIEnv*
114 env, jobject jcaller) {
115 return GetNonPODDatatype(env, base::android::JavaParamRef<jobject>(env,
116 jcaller)).Release();
117 }
118
119 extern "C" __attribute__((visibility("default")))
120 jint
121 Java_org_chromium_example_jni_1generator_SampleForTests_nativeMethod(JNIEnv*
122 env,
123 jobject jcaller,
124 jlong nativeCPPClass) {
125 CPPClass* native = reinterpret_cast<CPPClass*>(nativeCPPClass);
126 CHECK_NATIVE_PTR(env, jcaller, native, "Method", 0);
127 return native->Method(env, base::android::JavaParamRef<jobject>(env,
128 jcaller));
129 }
130
131 extern "C" __attribute__((visibility("default")))
132 jdouble
133 Java_org_chromium_example_jni_1generator_SampleForTests_nativeMethodOtherP0( JNIEnv*
134 env,
135 jobject jcaller,
136 jlong nativePtr) {
137 CPPClass::InnerClass* native =
138 reinterpret_cast<CPPClass::InnerClass*>(nativePtr);
139 CHECK_NATIVE_PTR(env, jcaller, native, "MethodOtherP0", 0);
140 return native->MethodOtherP0(env, base::android::JavaParamRef<jobject>(env,
141 jcaller));
142 }
143
144 extern "C" __attribute__((visibility("default")))
145 void
146 Java_org_chromium_example_jni_1generator_SampleForTests_nativeAddStructB(JNI Env*
147 env,
148 jobject jcaller,
149 jlong nativeCPPClass,
150 jobject b) {
151 CPPClass* native = reinterpret_cast<CPPClass*>(nativeCPPClass);
152 CHECK_NATIVE_PTR(env, jcaller, native, "AddStructB");
153 return native->AddStructB(env, base::android::JavaParamRef<jobject>(env,
154 jcaller), base::android::JavaParamRef<jobject>(env, b));
155 }
156
157 extern "C" __attribute__((visibility("default")))
158 void
159 Java_org_chromium_example_jni_1generator_SampleForTests_nativeIterateAndDoSo methingWithStructB(JNIEnv*
160 env,
161 jobject jcaller,
162 jlong nativeCPPClass) {
163 CPPClass* native = reinterpret_cast<CPPClass*>(nativeCPPClass);
164 CHECK_NATIVE_PTR(env, jcaller, native, "IterateAndDoSomethingWithStructB");
165 return native->IterateAndDoSomethingWithStructB(env,
166 base::android::JavaParamRef<jobject>(env, jcaller));
167 }
168
169 extern "C" __attribute__((visibility("default")))
170 jstring
171 Java_org_chromium_example_jni_1generator_SampleForTests_nativeReturnAString( JNIEnv*
172 env,
173 jobject jcaller,
174 jlong nativeCPPClass) {
175 CPPClass* native = reinterpret_cast<CPPClass*>(nativeCPPClass);
176 CHECK_NATIVE_PTR(env, jcaller, native, "ReturnAString", NULL);
177 return native->ReturnAString(env, base::android::JavaParamRef<jobject>(env,
178 jcaller)).Release();
179 }
180
181 static jint GetInnerIntFunction(JNIEnv* env, const
182 base::android::JavaParamRef<jclass>& jcaller);
183
184 extern "C" __attribute__((visibility("default")))
185 jint
186 Java_org_chromium_example_jni_1generator_SampleForTests_00024InnerClass_nati veGetInnerIntFunction(JNIEnv*
187 env, jclass jcaller) {
188 return GetInnerIntFunction(env, base::android::JavaParamRef<jclass>(env,
189 jcaller));
190 }
191
192 static base::subtle::AtomicWord g_SampleForTests_javaMethod = 0;
193 static jint Java_SampleForTests_javaMethod(JNIEnv* env, const
194 base::android::JavaRefOrBare<jobject>& obj, JniIntWrapper foo,
195 JniIntWrapper bar) {
196 CHECK_CLAZZ(env, obj.obj(),
197 SampleForTests_clazz(env), 0);
198 jmethodID method_id =
199 base::android::MethodID::LazyGet<
200 base::android::MethodID::TYPE_INSTANCE>(
201 env, SampleForTests_clazz(env),
202 "javaMethod",
203 "("
204 "I"
205 "I"
206 ")"
207 "I",
208 &g_SampleForTests_javaMethod);
209
210 jint ret =
211 env->CallIntMethod(obj.obj(),
212 method_id, as_jint(foo), as_jint(bar));
213 jni_generator::CheckException(env);
214 return ret;
215 }
216
217 static base::subtle::AtomicWord g_SampleForTests_staticJavaMethod = 0;
218 static jboolean Java_SampleForTests_staticJavaMethod(JNIEnv* env) {
219 CHECK_CLAZZ(env, SampleForTests_clazz(env),
220 SampleForTests_clazz(env), false);
221 jmethodID method_id =
222 base::android::MethodID::LazyGet<
223 base::android::MethodID::TYPE_STATIC>(
224 env, SampleForTests_clazz(env),
225 "staticJavaMethod",
226 "("
227 ")"
228 "Z",
229 &g_SampleForTests_staticJavaMethod);
230
231 jboolean ret =
232 env->CallStaticBooleanMethod(SampleForTests_clazz(env),
233 method_id);
234 jni_generator::CheckException(env);
235 return ret;
236 }
237
238 static base::subtle::AtomicWord g_SampleForTests_packagePrivateJavaMethod = 0;
239 static void Java_SampleForTests_packagePrivateJavaMethod(JNIEnv* env, const
240 base::android::JavaRefOrBare<jobject>& obj) {
241 CHECK_CLAZZ(env, obj.obj(),
242 SampleForTests_clazz(env));
243 jmethodID method_id =
244 base::android::MethodID::LazyGet<
245 base::android::MethodID::TYPE_INSTANCE>(
246 env, SampleForTests_clazz(env),
247 "packagePrivateJavaMethod",
248 "("
249 ")"
250 "V",
251 &g_SampleForTests_packagePrivateJavaMethod);
252
253 env->CallVoidMethod(obj.obj(),
254 method_id);
255 jni_generator::CheckException(env);
256 }
257
258 static base::subtle::AtomicWord g_SampleForTests_methodThatThrowsException = 0;
259 static void Java_SampleForTests_methodThatThrowsException(JNIEnv* env, const
260 base::android::JavaRefOrBare<jobject>& obj) {
261 CHECK_CLAZZ(env, obj.obj(),
262 SampleForTests_clazz(env));
263 jmethodID method_id =
264 base::android::MethodID::LazyGet<
265 base::android::MethodID::TYPE_INSTANCE>(
266 env, SampleForTests_clazz(env),
267 "methodThatThrowsException",
268 "("
269 ")"
270 "V",
271 &g_SampleForTests_methodThatThrowsException);
272
273 env->CallVoidMethod(obj.obj(),
274 method_id);
275 }
276
277 static base::subtle::AtomicWord g_SampleForTests_javaMethodWithAnnotatedParam =
278 0;
279 static void Java_SampleForTests_javaMethodWithAnnotatedParam(JNIEnv* env, const
280 base::android::JavaRefOrBare<jobject>& obj, JniIntWrapper foo) {
281 CHECK_CLAZZ(env, obj.obj(),
282 SampleForTests_clazz(env));
283 jmethodID method_id =
284 base::android::MethodID::LazyGet<
285 base::android::MethodID::TYPE_INSTANCE>(
286 env, SampleForTests_clazz(env),
287 "javaMethodWithAnnotatedParam",
288 "("
289 "I"
290 ")"
291 "V",
292 &g_SampleForTests_javaMethodWithAnnotatedParam);
293
294 env->CallVoidMethod(obj.obj(),
295 method_id, as_jint(foo));
296 jni_generator::CheckException(env);
297 }
298
299 static base::subtle::AtomicWord g_InnerStructA_create = 0;
300 static base::android::ScopedJavaLocalRef<jobject>
301 Java_InnerStructA_create(JNIEnv* env, jlong l,
302 JniIntWrapper i,
303 const base::android::JavaRefOrBare<jstring>& s) {
304 CHECK_CLAZZ(env, InnerStructA_clazz(env),
305 InnerStructA_clazz(env), NULL);
306 jmethodID method_id =
307 base::android::MethodID::LazyGet<
308 base::android::MethodID::TYPE_STATIC>(
309 env, InnerStructA_clazz(env),
310 "create",
311 "("
312 "J"
313 "I"
314 "Ljava/lang/String;"
315 ")"
316 "Lorg/chromium/example/jni_generator/SampleForTests$InnerStructA;",
317 &g_InnerStructA_create);
318
319 jobject ret =
320 env->CallStaticObjectMethod(InnerStructA_clazz(env),
321 method_id, l, as_jint(i), s.obj());
322 jni_generator::CheckException(env);
323 return base::android::ScopedJavaLocalRef<jobject>(env, ret);
324 }
325
326 static base::subtle::AtomicWord g_SampleForTests_addStructA = 0;
327 static void Java_SampleForTests_addStructA(JNIEnv* env, const
328 base::android::JavaRefOrBare<jobject>& obj, const
329 base::android::JavaRefOrBare<jobject>& a) {
330 CHECK_CLAZZ(env, obj.obj(),
331 SampleForTests_clazz(env));
332 jmethodID method_id =
333 base::android::MethodID::LazyGet<
334 base::android::MethodID::TYPE_INSTANCE>(
335 env, SampleForTests_clazz(env),
336 "addStructA",
337 "("
338 "Lorg/chromium/example/jni_generator/SampleForTests$InnerStructA;"
339 ")"
340 "V",
341 &g_SampleForTests_addStructA);
342
343 env->CallVoidMethod(obj.obj(),
344 method_id, a.obj());
345 jni_generator::CheckException(env);
346 }
347
348 static base::subtle::AtomicWord g_SampleForTests_iterateAndDoSomething = 0;
349 static void Java_SampleForTests_iterateAndDoSomething(JNIEnv* env, const
350 base::android::JavaRefOrBare<jobject>& obj) {
351 CHECK_CLAZZ(env, obj.obj(),
352 SampleForTests_clazz(env));
353 jmethodID method_id =
354 base::android::MethodID::LazyGet<
355 base::android::MethodID::TYPE_INSTANCE>(
356 env, SampleForTests_clazz(env),
357 "iterateAndDoSomething",
358 "("
359 ")"
360 "V",
361 &g_SampleForTests_iterateAndDoSomething);
362
363 env->CallVoidMethod(obj.obj(),
364 method_id);
365 jni_generator::CheckException(env);
366 }
367
368 static base::subtle::AtomicWord g_InnerStructB_getKey = 0;
369 static jlong Java_InnerStructB_getKey(JNIEnv* env, const
370 base::android::JavaRefOrBare<jobject>& obj) {
371 CHECK_CLAZZ(env, obj.obj(),
372 InnerStructB_clazz(env), 0);
373 jmethodID method_id =
374 base::android::MethodID::LazyGet<
375 base::android::MethodID::TYPE_INSTANCE>(
376 env, InnerStructB_clazz(env),
377 "getKey",
378 "("
379 ")"
380 "J",
381 &g_InnerStructB_getKey);
382
383 jlong ret =
384 env->CallLongMethod(obj.obj(),
385 method_id);
386 jni_generator::CheckException(env);
387 return ret;
388 }
389
390 static base::subtle::AtomicWord g_InnerStructB_getValue = 0;
391 static base::android::ScopedJavaLocalRef<jstring>
392 Java_InnerStructB_getValue(JNIEnv* env, const
393 base::android::JavaRefOrBare<jobject>& obj) {
394 CHECK_CLAZZ(env, obj.obj(),
395 InnerStructB_clazz(env), NULL);
396 jmethodID method_id =
397 base::android::MethodID::LazyGet<
398 base::android::MethodID::TYPE_INSTANCE>(
399 env, InnerStructB_clazz(env),
400 "getValue",
401 "("
402 ")"
403 "Ljava/lang/String;",
404 &g_InnerStructB_getValue);
405
406 jstring ret =
407 static_cast<jstring>(env->CallObjectMethod(obj.obj(),
408 method_id));
409 jni_generator::CheckException(env);
410 return base::android::ScopedJavaLocalRef<jstring>(env, ret);
411 }
412
413 // Step 3: RegisterNatives.
414
415 static const JNINativeMethod kMethodsInnerClass[] = {
416 { "nativeGetInnerIntFunction",
417 "("
418 ")"
419 "I",
420 reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTe sts_00024InnerClass_nativeGetInnerIntFunction)
421 },
422 };
423
424 static const JNINativeMethod kMethodsSampleForTests[] = {
425 { "nativeInit",
426 "("
427 "Ljava/lang/String;"
428 ")"
429 "J",
430 reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTe sts_nativeInit)
431 },
432 { "nativeDestroy",
433 "("
434 "J"
435 ")"
436 "V",
437 reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTe sts_nativeDestroy)
438 },
439 { "nativeGetDoubleFunction",
440 "("
441 ")"
442 "D",
443 reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTe sts_nativeGetDoubleFunction)
444 },
445 { "nativeGetFloatFunction",
446 "("
447 ")"
448 "F",
449 reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTe sts_nativeGetFloatFunction)
450 },
451 { "nativeSetNonPODDatatype",
452 "("
453 "Landroid/graphics/Rect;"
454 ")"
455 "V",
456 reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTe sts_nativeSetNonPODDatatype)
457 },
458 { "nativeGetNonPODDatatype",
459 "("
460 ")"
461 "Ljava/lang/Object;",
462 reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTe sts_nativeGetNonPODDatatype)
463 },
464 { "nativeMethod",
465 "("
466 "J"
467 ")"
468 "I",
469 reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTe sts_nativeMethod)
470 },
471 { "nativeMethodOtherP0",
472 "("
473 "J"
474 ")"
475 "D",
476 reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTe sts_nativeMethodOtherP0)
477 },
478 { "nativeAddStructB",
479 "("
480 "J"
481 "Lorg/chromium/example/jni_generator/SampleForTests$InnerStructB;"
482 ")"
483 "V",
484 reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTe sts_nativeAddStructB)
485 },
486 { "nativeIterateAndDoSomethingWithStructB",
487 "("
488 "J"
489 ")"
490 "V",
491 reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTe sts_nativeIterateAndDoSomethingWithStructB)
492 },
493 { "nativeReturnAString",
494 "("
495 "J"
496 ")"
497 "Ljava/lang/String;",
498 reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTe sts_nativeReturnAString)
499 },
500 };
501
502 static bool RegisterNativesImpl(JNIEnv* env) {
503 if (base::android::IsManualJniRegistrationDisabled()) return true;
504
505 const int kMethodsInnerClassSize = arraysize(kMethodsInnerClass);
506
507 if (env->RegisterNatives(InnerClass_clazz(env),
508 kMethodsInnerClass,
509 kMethodsInnerClassSize) < 0) {
510 jni_generator::HandleRegistrationError(
511 env, InnerClass_clazz(env), __FILE__);
512 return false;
513 }
514
515 const int kMethodsSampleForTestsSize = arraysize(kMethodsSampleForTests);
516
517 if (env->RegisterNatives(SampleForTests_clazz(env),
518 kMethodsSampleForTests,
519 kMethodsSampleForTestsSize) < 0) {
520 jni_generator::HandleRegistrationError(
521 env, SampleForTests_clazz(env), __FILE__);
522 return false;
523 }
524
525 return true;
526 }
527
528 } // namespace android
529 } // namespace base
530
531 #endif // org_chromium_example_jni_generator_SampleForTests_JNI
OLDNEW
« no previous file with comments | « base/android/jni_generator/SampleForTests_jni.golden ('k') | base/android/jni_generator/jni_generator.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698