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

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

Issue 2565723002: android: Realign stack pointer on JNI entry. (Closed)
Patch Set: 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 "("
205 "I"
206 "I"
207 ")"
208 "I",
209 &g_SampleForTests_javaMethod);
210
211 jint ret =
212 env->CallIntMethod(obj.obj(),
213 method_id, as_jint(foo), as_jint(bar));
214 jni_generator::CheckException(env);
215 return ret;
216 }
217
218 static base::subtle::AtomicWord g_SampleForTests_staticJavaMethod = 0;
219 static jboolean Java_SampleForTests_staticJavaMethod(JNIEnv* env) {
220 CHECK_CLAZZ(env, SampleForTests_clazz(env),
221 SampleForTests_clazz(env), false);
222 jmethodID method_id =
223 base::android::MethodID::LazyGet<
224 base::android::MethodID::TYPE_STATIC>(
225 env, SampleForTests_clazz(env),
226 "staticJavaMethod",
227
228 "("
229 ")"
230 "Z",
231 &g_SampleForTests_staticJavaMethod);
232
233 jboolean ret =
234 env->CallStaticBooleanMethod(SampleForTests_clazz(env),
235 method_id);
236 jni_generator::CheckException(env);
237 return ret;
238 }
239
240 static base::subtle::AtomicWord g_SampleForTests_packagePrivateJavaMethod = 0;
241 static void Java_SampleForTests_packagePrivateJavaMethod(JNIEnv* env, const
242 base::android::JavaRefOrBare<jobject>& obj) {
243 CHECK_CLAZZ(env, obj.obj(),
244 SampleForTests_clazz(env));
245 jmethodID method_id =
246 base::android::MethodID::LazyGet<
247 base::android::MethodID::TYPE_INSTANCE>(
248 env, SampleForTests_clazz(env),
249 "packagePrivateJavaMethod",
250
251 "("
252 ")"
253 "V",
254 &g_SampleForTests_packagePrivateJavaMethod);
255
256 env->CallVoidMethod(obj.obj(),
257 method_id);
258 jni_generator::CheckException(env);
259
260 }
261
262 static base::subtle::AtomicWord g_SampleForTests_methodThatThrowsException = 0;
263 static void Java_SampleForTests_methodThatThrowsException(JNIEnv* env, const
264 base::android::JavaRefOrBare<jobject>& obj) {
265 CHECK_CLAZZ(env, obj.obj(),
266 SampleForTests_clazz(env));
267 jmethodID method_id =
268 base::android::MethodID::LazyGet<
269 base::android::MethodID::TYPE_INSTANCE>(
270 env, SampleForTests_clazz(env),
271 "methodThatThrowsException",
272
273 "("
274 ")"
275 "V",
276 &g_SampleForTests_methodThatThrowsException);
277
278 env->CallVoidMethod(obj.obj(),
279 method_id);
280
281 }
282
283 static base::subtle::AtomicWord g_SampleForTests_javaMethodWithAnnotatedParam =
284 0;
285 static void Java_SampleForTests_javaMethodWithAnnotatedParam(JNIEnv* env, const
286 base::android::JavaRefOrBare<jobject>& obj, JniIntWrapper foo) {
287 CHECK_CLAZZ(env, obj.obj(),
288 SampleForTests_clazz(env));
289 jmethodID method_id =
290 base::android::MethodID::LazyGet<
291 base::android::MethodID::TYPE_INSTANCE>(
292 env, SampleForTests_clazz(env),
293 "javaMethodWithAnnotatedParam",
294
295 "("
296 "I"
297 ")"
298 "V",
299 &g_SampleForTests_javaMethodWithAnnotatedParam);
300
301 env->CallVoidMethod(obj.obj(),
302 method_id, as_jint(foo));
303 jni_generator::CheckException(env);
304
305 }
306
307 static base::subtle::AtomicWord g_InnerStructA_create = 0;
308 static base::android::ScopedJavaLocalRef<jobject>
309 Java_InnerStructA_create(JNIEnv* env, jlong l,
310 JniIntWrapper i,
311 const base::android::JavaRefOrBare<jstring>& s) {
312 CHECK_CLAZZ(env, InnerStructA_clazz(env),
313 InnerStructA_clazz(env), NULL);
314 jmethodID method_id =
315 base::android::MethodID::LazyGet<
316 base::android::MethodID::TYPE_STATIC>(
317 env, InnerStructA_clazz(env),
318 "create",
319
320 "("
321 "J"
322 "I"
323 "Ljava/lang/String;"
324 ")"
325 "Lorg/chromium/example/jni_generator/SampleForTests$InnerStructA;",
326 &g_InnerStructA_create);
327
328 jobject ret =
329 env->CallStaticObjectMethod(InnerStructA_clazz(env),
330 method_id, l, as_jint(i), s.obj());
331 jni_generator::CheckException(env);
332 return base::android::ScopedJavaLocalRef<jobject>(env, ret);
333 }
334
335 static base::subtle::AtomicWord g_SampleForTests_addStructA = 0;
336 static void Java_SampleForTests_addStructA(JNIEnv* env, const
337 base::android::JavaRefOrBare<jobject>& obj, const
338 base::android::JavaRefOrBare<jobject>& a) {
339 CHECK_CLAZZ(env, obj.obj(),
340 SampleForTests_clazz(env));
341 jmethodID method_id =
342 base::android::MethodID::LazyGet<
343 base::android::MethodID::TYPE_INSTANCE>(
344 env, SampleForTests_clazz(env),
345 "addStructA",
346
347 "("
348 "Lorg/chromium/example/jni_generator/SampleForTests$InnerStructA;"
349 ")"
350 "V",
351 &g_SampleForTests_addStructA);
352
353 env->CallVoidMethod(obj.obj(),
354 method_id, a.obj());
355 jni_generator::CheckException(env);
356
357 }
358
359 static base::subtle::AtomicWord g_SampleForTests_iterateAndDoSomething = 0;
360 static void Java_SampleForTests_iterateAndDoSomething(JNIEnv* env, const
361 base::android::JavaRefOrBare<jobject>& obj) {
362 CHECK_CLAZZ(env, obj.obj(),
363 SampleForTests_clazz(env));
364 jmethodID method_id =
365 base::android::MethodID::LazyGet<
366 base::android::MethodID::TYPE_INSTANCE>(
367 env, SampleForTests_clazz(env),
368 "iterateAndDoSomething",
369
370 "("
371 ")"
372 "V",
373 &g_SampleForTests_iterateAndDoSomething);
374
375 env->CallVoidMethod(obj.obj(),
376 method_id);
377 jni_generator::CheckException(env);
378
379 }
380
381 static base::subtle::AtomicWord g_InnerStructB_getKey = 0;
382 static jlong Java_InnerStructB_getKey(JNIEnv* env, const
383 base::android::JavaRefOrBare<jobject>& obj) {
384 CHECK_CLAZZ(env, obj.obj(),
385 InnerStructB_clazz(env), 0);
386 jmethodID method_id =
387 base::android::MethodID::LazyGet<
388 base::android::MethodID::TYPE_INSTANCE>(
389 env, InnerStructB_clazz(env),
390 "getKey",
391
392 "("
393 ")"
394 "J",
395 &g_InnerStructB_getKey);
396
397 jlong ret =
398 env->CallLongMethod(obj.obj(),
399 method_id);
400 jni_generator::CheckException(env);
401 return ret;
402 }
403
404 static base::subtle::AtomicWord g_InnerStructB_getValue = 0;
405 static base::android::ScopedJavaLocalRef<jstring>
406 Java_InnerStructB_getValue(JNIEnv* env, const
407 base::android::JavaRefOrBare<jobject>& obj) {
408 CHECK_CLAZZ(env, obj.obj(),
409 InnerStructB_clazz(env), NULL);
410 jmethodID method_id =
411 base::android::MethodID::LazyGet<
412 base::android::MethodID::TYPE_INSTANCE>(
413 env, InnerStructB_clazz(env),
414 "getValue",
415
416 "("
417 ")"
418 "Ljava/lang/String;",
419 &g_InnerStructB_getValue);
420
421 jstring ret =
422 static_cast<jstring>(env->CallObjectMethod(obj.obj(),
423 method_id));
424 jni_generator::CheckException(env);
425 return base::android::ScopedJavaLocalRef<jstring>(env, ret);
426 }
427
428 // Step 3: RegisterNatives.
429
430 static const JNINativeMethod kMethodsInnerClass[] = {
431 { "nativeGetInnerIntFunction",
432 "("
433 ")"
434 "I",
435 reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTe sts_00024InnerClass_nativeGetInnerIntFunction)
436 },
437 };
438
439 static const JNINativeMethod kMethodsSampleForTests[] = {
440 { "nativeInit",
441 "("
442 "Ljava/lang/String;"
443 ")"
444 "J",
445 reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTe sts_nativeInit)
446 },
447 { "nativeDestroy",
448 "("
449 "J"
450 ")"
451 "V",
452 reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTe sts_nativeDestroy)
453 },
454 { "nativeGetDoubleFunction",
455 "("
456 ")"
457 "D",
458 reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTe sts_nativeGetDoubleFunction)
459 },
460 { "nativeGetFloatFunction",
461 "("
462 ")"
463 "F",
464 reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTe sts_nativeGetFloatFunction)
465 },
466 { "nativeSetNonPODDatatype",
467 "("
468 "Landroid/graphics/Rect;"
469 ")"
470 "V",
471 reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTe sts_nativeSetNonPODDatatype)
472 },
473 { "nativeGetNonPODDatatype",
474 "("
475 ")"
476 "Ljava/lang/Object;",
477 reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTe sts_nativeGetNonPODDatatype)
478 },
479 { "nativeMethod",
480 "("
481 "J"
482 ")"
483 "I",
484 reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTe sts_nativeMethod)
485 },
486 { "nativeMethodOtherP0",
487 "("
488 "J"
489 ")"
490 "D",
491 reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTe sts_nativeMethodOtherP0)
492 },
493 { "nativeAddStructB",
494 "("
495 "J"
496 "Lorg/chromium/example/jni_generator/SampleForTests$InnerStructB;"
497 ")"
498 "V",
499 reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTe sts_nativeAddStructB)
500 },
501 { "nativeIterateAndDoSomethingWithStructB",
502 "("
503 "J"
504 ")"
505 "V",
506 reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTe sts_nativeIterateAndDoSomethingWithStructB)
507 },
508 { "nativeReturnAString",
509 "("
510 "J"
511 ")"
512 "Ljava/lang/String;",
513 reinterpret_cast<void*>(Java_org_chromium_example_jni_1generator_SampleForTe sts_nativeReturnAString)
514 },
515 };
516
517 static bool RegisterNativesImpl(JNIEnv* env) {
518 if (base::android::IsManualJniRegistrationDisabled()) return true;
519
520 const int kMethodsInnerClassSize = arraysize(kMethodsInnerClass);
521
522 if (env->RegisterNatives(InnerClass_clazz(env),
523 kMethodsInnerClass,
524 kMethodsInnerClassSize) < 0) {
525 jni_generator::HandleRegistrationError(
526 env, InnerClass_clazz(env), __FILE__);
527 return false;
528 }
529
530 const int kMethodsSampleForTestsSize = arraysize(kMethodsSampleForTests);
531
532 if (env->RegisterNatives(SampleForTests_clazz(env),
533 kMethodsSampleForTests,
534 kMethodsSampleForTestsSize) < 0) {
535 jni_generator::HandleRegistrationError(
536 env, SampleForTests_clazz(env), __FILE__);
537 return false;
538 }
539
540 return true;
541 }
542
543 } // namespace android
544 } // namespace base
545
546 #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