0

Logging all native->java function calls

As we work towards a Java-less renderer, we need to enumerate all usages
of Java in the renderer process. To do so, we call a callback on every
native->java function call, which is only set when we are in a renderer
process. This callback calls DumpWithoutCrashing so we can start to get
reports in crash/.

When we see new entries, we should add them to the list
kKnownRendererJavaUses - this will be the definitive list of all our
Java uses.

This is only enabled on Canary for now, I don't anticipate us moving it
onto other channels, as Canary should be enough coverage. Once we have
run it long enough on Canary, and think our list is complete, we will
revert this change.

Binary-Size: Temporary, planned to be reverted
Bug: 388843399
Change-Id: Id76a796488bcd18897c1bcd4ae30d3e28d384d56
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6180507
Auto-Submit: Sam Maier <smaier@chromium.org>
Reviewed-by: Dave Tapuska <dtapuska@chromium.org>
Reviewed-by: Andrew Grieve <agrieve@chromium.org>
Commit-Queue: Dave Tapuska <dtapuska@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1410930}
This commit is contained in:
Sam Maier
2025-01-24 07:39:25 -08:00
committed by Chromium LUCI CQ
parent 04b791e0e8
commit c3fc8848ef
11 changed files with 160 additions and 0 deletions

@ -130,6 +130,7 @@ source_set("app") {
"android/library_loader_hooks.h",
]
deps += [
"//base/version_info/android:channel_getter",
"//mojo/public/java/system:native_support",
"//ui/gl",
]

@ -4,15 +4,60 @@
#include "content/app/android/library_loader_hooks.h"
#include "base/containers/fixed_flat_set.h"
#include "base/debug/crash_logging.h"
#include "base/debug/dump_without_crashing.h"
#include "base/i18n/icu_util.h"
#include "base/logging.h"
#include "base/process/current_process.h"
#include "base/trace_event/trace_event.h"
#include "base/version_info/android/channel_getter.h"
#include "content/common/content_constants_internal.h"
#include "content/common/url_schemes.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/common/content_switches.h"
#include "services/tracing/public/cpp/trace_startup.h"
namespace {
void DumpUnseenRendererJavaUsage(char const* class_name,
char const* method_name) {
// We hope to launch a Java-less renderer - crbug.com/388840315. As a part of
// this, we need to figure out what usages of Java exist in the renderer. This
// only exists to collect the set of Java usages. If you see a new
// DumpWithoutCrashing from this file, simply add the problem function to the
// list.
static constexpr auto kKnownRendererJavaUses =
base::MakeFixedFlatSet<std::pair<std::string_view, std::string_view>>(
{{"java/lang/Runtime", "getRuntime"},
{"java/lang/Runtime", "freeMemory"},
{"java/lang/Runtime", "totalMemory"},
{"org/chromium/android_webview/common/origin_trial/"
"DisableOriginTrialsSafeModeUtils",
"isDisableOriginTrialsEnabled"},
{"org/chromium/base/ApkAssets", "open"},
{"org/chromium/base/BuildInfo", "getAll"},
{"org/chromium/base/EarlyTraceEvent",
"getBackgroundStartupTracingFlag"},
{"org/chromium/base/JavaExceptionReporter", "installHandler"},
{"org/chromium/base/MemoryPressureListener", "addNativeCallback"},
{"org/chromium/base/SysUtils", "isLowEndDevice"},
{"org/chromium/base/ThreadUtils", "setThreadPriorityAudio"},
{"org/chromium/base/TimezoneUtils", "getDefaultTimeZoneId"},
{"org/chromium/base/TraceEvent", "setEnabled"},
{"org/chromium/base/version_info/VersionConstantsBridge",
"getChannel"},
{"org/chromium/content/app/ContentChildProcessServiceDelegate",
"setFileDescriptorsIdsToKeys"},
{"org/chromium/media/MediaCodecUtil",
"isDecoderSupportedForDevice"}});
if (!kKnownRendererJavaUses.contains({class_name, method_name})) {
SCOPED_CRASH_KEY_STRING256("Java-less Renderer", "Java Class", class_name);
SCOPED_CRASH_KEY_STRING64("Java-less Renderer", "Java Method", method_name);
base::debug::DumpWithoutCrashing();
}
}
} // namespace
namespace content {
bool LibraryLoaded(JNIEnv* env,
@ -28,6 +73,15 @@ bool LibraryLoaded(JNIEnv* env,
base::CurrentProcessType::PROCESS_BROWSER);
}
// Temporary, until we collect what we believe to be an exhaustive list of
// renderer usages of Java. Feel free to delete if this is still here in 2026.
if (version_info::android::GetChannel() == version_info::Channel::CANARY) {
if (base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
switches::kProcessType) == switches::kRendererProcess) {
jni_zero::SetNativeToJavaCallback(DumpUnseenRendererJavaUsage);
}
}
// Tracing itself can only be enabled after mojo is initialized, we do so in
// ContentMainRunnerImpl::Initialize.

@ -89,6 +89,8 @@ def method_definition(sb, cbn):
for p in cbn.params)
with sb.block(after='\n'):
sb(f'jni_zero::CallNativeToJavaCallback("{java_class.full_name_with_slashes}", "{cbn.name}");\n'
)
sb('static std::atomic<jmethodID> cached_method_id(nullptr);\n')
class_accessor = header_common.class_accessor_expression(java_class)
receiver_arg = 'clazz' if reciever_arg_is_class else 'obj.obj()'

@ -46,6 +46,13 @@ JNI_ZERO_COMPONENT_BUILD_EXPORT void DisableJvmForTesting();
JNI_ZERO_COMPONENT_BUILD_EXPORT void SetExceptionHandler(
void (*callback)(JNIEnv*));
JNI_ZERO_COMPONENT_BUILD_EXPORT void SetNativeToJavaCallback(
void (*callback)(char const*, char const*));
JNI_ZERO_COMPONENT_BUILD_EXPORT void CallNativeToJavaCallback(
char const* className,
char const* methodName);
// Returns true if an exception is pending in the provided JNIEnv*.
JNI_ZERO_COMPONENT_BUILD_EXPORT bool HasException(JNIEnv* env);

@ -24,6 +24,7 @@ JavaVM* g_jvm = nullptr;
jclass (*g_class_resolver)(JNIEnv*, const char*, const char*) = nullptr;
void (*g_exception_handler_callback)(JNIEnv*) = nullptr;
void (*g_native_to_java_callback)(const char*, const char*) = nullptr;
jclass GetClassInternal(JNIEnv* env,
const char* class_name,
@ -173,6 +174,16 @@ void SetExceptionHandler(void (*callback)(JNIEnv*)) {
g_exception_handler_callback = callback;
}
void SetNativeToJavaCallback(void (*callback)(char const*, char const*)) {
g_native_to_java_callback = callback;
}
void CallNativeToJavaCallback(char const* class_name, char const* method_name) {
if (g_native_to_java_callback) {
g_native_to_java_callback(class_name, method_name);
}
}
void CheckException(JNIEnv* env) {
if (!HasException(env)) {
return;

@ -346,6 +346,7 @@ static jni_zero::ScopedJavaLocalRef<jobject> Java_SampleForTests_Constructor(
JNIEnv* env,
JniIntWrapper foo,
JniIntWrapper bar) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/SampleForTests", "<init>");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, nullptr);
@ -364,6 +365,7 @@ static jni_zero::ScopedJavaLocalRef<jobject> Java_SampleForTests_addStructA(
JNIEnv* env,
const jni_zero::JavaRef<jobject>& obj,
const jni_zero::JavaRef<jobject>& a) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/SampleForTests", "addStructA");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz, nullptr);
@ -382,6 +384,7 @@ static jni_zero::ScopedJavaLocalRef<jclass> Java_SampleForTests_getClass(
JNIEnv* env,
const jni_zero::JavaRef<jobject>& obj,
const jni_zero::JavaRef<jclass>& arg0) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/SampleForTests", "getClass");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz, nullptr);
@ -402,6 +405,7 @@ static std::string Java_SampleForTests_getFirstString(
const jni_zero::JavaRef<jobject>& obj,
std::vector<const char*> const& array,
const char* const& finalArg) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/SampleForTests", "getFirstString");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz, nullptr);
@ -426,6 +430,7 @@ static std::string Java_SampleForTests_getFirstString(
}
static jni_zero::ScopedJavaLocalRef<jobject> Java_SampleForTests_getInnerEnum(JNIEnv* env) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/SampleForTests", "getInnerEnum");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, nullptr);
@ -443,6 +448,7 @@ static jni_zero::ScopedJavaLocalRef<jobject> Java_SampleForTests_getInnerEnum(JN
static jni_zero::ScopedJavaLocalRef<jobject> Java_SampleForTests_getInnerEnum(
JNIEnv* env,
JniIntWrapper a) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/SampleForTests", "getInnerEnum");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, nullptr);
@ -458,6 +464,7 @@ static jni_zero::ScopedJavaLocalRef<jobject> Java_SampleForTests_getInnerEnum(
}
static jni_zero::ScopedJavaLocalRef<jobject> Java_SampleForTests_getInnerInterface(JNIEnv* env) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/SampleForTests", "getInnerInterface");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, nullptr);
@ -476,6 +483,7 @@ static jni_zero::ScopedJavaLocalRef<jthrowable> Java_SampleForTests_getThrowable
JNIEnv* env,
const jni_zero::JavaRef<jobject>& obj,
const jni_zero::JavaRef<jthrowable>& arg0) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/SampleForTests", "getThrowable");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz, nullptr);
@ -494,6 +502,7 @@ static jni_zero::ScopedJavaLocalRef<jthrowable> Java_SampleForTests_getThrowable
static void Java_SampleForTests_iterateAndDoSomething(
JNIEnv* env,
const jni_zero::JavaRef<jobject>& obj) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/SampleForTests", "iterateAndDoSomething");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz);
@ -512,6 +521,7 @@ static jint Java_SampleForTests_javaMethod(
const jni_zero::JavaRef<jobject>& obj,
JniIntWrapper _jcaller,
JniIntWrapper ret) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/SampleForTests", "javaMethod");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz, 0);
@ -537,6 +547,7 @@ static std::vector<int32_t> Java_SampleForTests_jniTypesAndAnnotations(
std::vector<int32_t> const& bar,
JniIntWrapper baz,
long bat) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/SampleForTests", "jniTypesAndAnnotations");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz, nullptr);
@ -565,6 +576,7 @@ static std::vector<int32_t> Java_SampleForTests_jniTypesAndAnnotations(
static std::vector<jni_zero::ScopedJavaLocalRef<jobject>> Java_SampleForTests_listTest1(
JNIEnv* env,
std::vector<std::string> const& items) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/SampleForTests", "listTest1");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, nullptr);
@ -585,6 +597,7 @@ static std::vector<jni_zero::ScopedJavaLocalRef<jobject>> Java_SampleForTests_li
static std::map<std::string, std::string> Java_SampleForTests_mapTest1(
JNIEnv* env,
std::map<std::string, std::string> const& arg0) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/SampleForTests", "mapTest1");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, nullptr);
@ -605,6 +618,7 @@ static std::map<std::string, std::string> Java_SampleForTests_mapTest1(
static void Java_SampleForTests_methodThatThrowsException(
JNIEnv* env,
const jni_zero::JavaRef<jobject>& obj) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/SampleForTests", "methodThatThrowsException");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz);
@ -621,6 +635,7 @@ static void Java_SampleForTests_methodThatThrowsException(
static jboolean Java_SampleForTests_methodWithAnnotationParamAssignment(
JNIEnv* env,
const jni_zero::JavaRef<jobject>& obj) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/SampleForTests", "methodWithAnnotationParamAssignment");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz, false);
@ -640,6 +655,7 @@ static void Java_SampleForTests_methodWithGenericParams(
const jni_zero::JavaRef<jobject>& obj,
const jni_zero::JavaRef<jobject>& _env,
const jni_zero::JavaRef<jobject>& bar) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/SampleForTests", "methodWithGenericParams");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz);
@ -656,6 +672,7 @@ static void Java_SampleForTests_methodWithGenericParams(
static void Java_SampleForTests_packagePrivateJavaMethod(
JNIEnv* env,
const jni_zero::JavaRef<jobject>& obj) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/SampleForTests", "packagePrivateJavaMethod");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz);
@ -678,6 +695,7 @@ static std::vector<bool> Java_SampleForTests_primitiveArrays(
std::vector<int64_t> const& l,
std::vector<float> const& f,
std::vector<double> const& d) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/SampleForTests", "primitiveArrays");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, nullptr);
@ -711,6 +729,7 @@ static std::vector<bool> Java_SampleForTests_primitiveArrays(
}
static jboolean Java_SampleForTests_staticJavaMethod(JNIEnv* env) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/SampleForTests", "staticJavaMethod");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, false);
@ -730,6 +749,7 @@ static jni_zero::ScopedJavaLocalRef<jobject> Java_InnerStructA_create(
jlong l,
JniIntWrapper i,
const jni_zero::JavaRef<jstring>& s) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/SampleForTests$InnerStructA", "create");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_SampleForTests_00024InnerStructA_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, nullptr);
@ -745,6 +765,7 @@ static jni_zero::ScopedJavaLocalRef<jobject> Java_InnerStructA_create(
}
static jlong Java_InnerStructB_getKey(JNIEnv* env, const jni_zero::JavaRef<jobject>& obj) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/SampleForTests$InnerStructB", "getKey");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_SampleForTests_00024InnerStructB_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz, 0);
@ -762,6 +783,7 @@ static jlong Java_InnerStructB_getKey(JNIEnv* env, const jni_zero::JavaRef<jobje
static jni_zero::ScopedJavaLocalRef<jstring> Java_InnerStructB_getValue(
JNIEnv* env,
const jni_zero::JavaRef<jobject>& obj) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/SampleForTests$InnerStructB", "getValue");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_SampleForTests_00024InnerStructB_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz, nullptr);

@ -79,6 +79,7 @@ static void Java_SampleBidirectionalNonProxy_addStructB(
const jni_zero::JavaRef<jobject>& obj,
const jni_zero::JavaRef<jobject>& caller,
const jni_zero::JavaRef<jobject>& b) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/SampleBidirectionalNonProxy", "addStructB");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_SampleBidirectionalNonProxy_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz);
@ -97,6 +98,7 @@ static void Java_SampleBidirectionalNonProxy_setBool(
const jni_zero::JavaRef<jobject>& obj,
const jni_zero::JavaRef<jobject>& b,
const jni_zero::JavaRef<jobject>& i) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/SampleBidirectionalNonProxy", "setBool");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_SampleBidirectionalNonProxy_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz);
@ -114,6 +116,7 @@ static void Java_SampleBidirectionalNonProxy_setStringBuilder(
JNIEnv* env,
const jni_zero::JavaRef<jobject>& obj,
const jni_zero::JavaRef<jobject>& sb) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/SampleBidirectionalNonProxy", "setStringBuilder");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_SampleBidirectionalNonProxy_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz);
@ -128,6 +131,7 @@ static void Java_SampleBidirectionalNonProxy_setStringBuilder(
}
static jdouble Java_SampleBidirectionalNonProxy_testMethodWithNoParam(JNIEnv* env) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/SampleBidirectionalNonProxy", "testMethodWithNoParam");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_SampleBidirectionalNonProxy_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, 0);
@ -146,6 +150,7 @@ static void Java_SampleBidirectionalNonProxy_testMethodWithParam(
JNIEnv* env,
const jni_zero::JavaRef<jobject>& obj,
JniIntWrapper iParam) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/SampleBidirectionalNonProxy", "testMethodWithParam");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_SampleBidirectionalNonProxy_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz);
@ -163,6 +168,7 @@ static jni_zero::ScopedJavaLocalRef<jstring> Java_SampleBidirectionalNonProxy_te
JNIEnv* env,
const jni_zero::JavaRef<jobject>& obj,
JniIntWrapper iParam) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/SampleBidirectionalNonProxy", "testMethodWithParamAndReturn");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_SampleBidirectionalNonProxy_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz, nullptr);
@ -180,6 +186,7 @@ static jni_zero::ScopedJavaLocalRef<jstring> Java_SampleBidirectionalNonProxy_te
static jni_zero::ScopedJavaLocalRef<jstring> Java_SampleBidirectionalNonProxy_testStaticMethodWithNoParam(
JNIEnv* env) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/SampleBidirectionalNonProxy", "testStaticMethodWithNoParam");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_SampleBidirectionalNonProxy_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, nullptr);
@ -198,6 +205,7 @@ static jni_zero::ScopedJavaLocalRef<jstring> Java_SampleBidirectionalNonProxy_te
static jint Java_SampleBidirectionalNonProxy_testStaticMethodWithParam(
JNIEnv* env,
JniIntWrapper iParam) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/SampleBidirectionalNonProxy", "testStaticMethodWithParam");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_SampleBidirectionalNonProxy_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, 0);

@ -33,6 +33,7 @@ enum Java_JavapClass_constant_fields {
// Native to Java functions
[[maybe_unused]] static jni_zero::ScopedJavaLocalRef<jobject> Java_JavapClass_Constructor(
JNIEnv* env) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/JavapClass", "<init>");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_JavapClass_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, nullptr);
@ -50,6 +51,7 @@ enum Java_JavapClass_constant_fields {
[[maybe_unused]] static jni_zero::ScopedJavaLocalRef<jobject> Java_JavapClass_Constructor__boolean(
JNIEnv* env,
jboolean p0) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/JavapClass", "<init>");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_JavapClass_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, nullptr);
@ -67,6 +69,7 @@ enum Java_JavapClass_constant_fields {
[[maybe_unused]] static jni_zero::ScopedJavaLocalRef<jobject> Java_JavapClass_Constructor__int(
JNIEnv* env,
JniIntWrapper p0) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/JavapClass", "<init>");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_JavapClass_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, nullptr);
@ -85,6 +88,7 @@ enum Java_JavapClass_constant_fields {
JNIEnv* env,
const jni_zero::JavaRef<jobject>& obj,
const jni_zero::JavaRef<jstring>& p0) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/JavapClass", "intMethod");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_JavapClass_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz, 0);
@ -100,6 +104,7 @@ enum Java_JavapClass_constant_fields {
}
[[maybe_unused]] static void Java_JavapClass_needsMangling__int(JNIEnv* env, JniIntWrapper p0) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/JavapClass", "needsMangling");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_JavapClass_clazz(env);
CHECK_CLAZZ(env, clazz, clazz);
@ -116,6 +121,7 @@ enum Java_JavapClass_constant_fields {
[[maybe_unused]] static void Java_JavapClass_needsMangling__String(
JNIEnv* env,
const jni_zero::JavaRef<jstring>& p0) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/JavapClass", "needsMangling");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_JavapClass_clazz(env);
CHECK_CLAZZ(env, clazz, clazz);
@ -132,6 +138,7 @@ enum Java_JavapClass_constant_fields {
[[maybe_unused]] static void Java_JavapClass_needsMangling__java_util_ArrayList(
JNIEnv* env,
const jni_zero::JavaRef<jobject>& p0) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/JavapClass", "needsMangling");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_JavapClass_clazz(env);
CHECK_CLAZZ(env, clazz, clazz);
@ -150,6 +157,7 @@ enum Java_JavapClass_constant_fields {
const jni_zero::JavaRef<jobject>& obj,
const jni_zero::JavaRef<jobject>& p0,
const jni_zero::JavaRef<jobjectArray>& p1) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/JavapClass", "objTest");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_JavapClass_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz, nullptr);
@ -169,6 +177,7 @@ enum Java_JavapClass_constant_fields {
JNIEnv* env,
const jni_zero::JavaRef<jstring>& p0,
const jni_zero::JavaRef<jobject>& p1) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/JavapClass", "staticIntMethod");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_JavapClass_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, 0);
@ -186,6 +195,7 @@ enum Java_JavapClass_constant_fields {
[[maybe_unused]] static jni_zero::ScopedJavaLocalRef<jobjectArray> Java_JavapClass_staticIntMethod(
JNIEnv* env,
const jni_zero::JavaRef<jstring>& p0) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/JavapClass", "staticIntMethod");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_JavapClass_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, nullptr);

@ -346,6 +346,7 @@ static jni_zero::ScopedJavaLocalRef<jobject> Java_SampleForTests_Constructor(
JNIEnv* env,
JniIntWrapper foo,
JniIntWrapper bar) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "<init>");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, nullptr);
@ -364,6 +365,7 @@ static jni_zero::ScopedJavaLocalRef<jobject> Java_SampleForTests_addStructA(
JNIEnv* env,
const jni_zero::JavaRef<jobject>& obj,
const jni_zero::JavaRef<jobject>& a) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "addStructA");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz, nullptr);
@ -382,6 +384,7 @@ static jni_zero::ScopedJavaLocalRef<jclass> Java_SampleForTests_getClass(
JNIEnv* env,
const jni_zero::JavaRef<jobject>& obj,
const jni_zero::JavaRef<jclass>& arg0) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "getClass");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz, nullptr);
@ -402,6 +405,7 @@ static std::string Java_SampleForTests_getFirstString(
const jni_zero::JavaRef<jobject>& obj,
std::vector<const char*> const& array,
const char* const& finalArg) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "getFirstString");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz, nullptr);
@ -426,6 +430,7 @@ static std::string Java_SampleForTests_getFirstString(
}
static jni_zero::ScopedJavaLocalRef<jobject> Java_SampleForTests_getInnerEnum(JNIEnv* env) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "getInnerEnum");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, nullptr);
@ -443,6 +448,7 @@ static jni_zero::ScopedJavaLocalRef<jobject> Java_SampleForTests_getInnerEnum(JN
static jni_zero::ScopedJavaLocalRef<jobject> Java_SampleForTests_getInnerEnum(
JNIEnv* env,
JniIntWrapper a) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "getInnerEnum");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, nullptr);
@ -458,6 +464,7 @@ static jni_zero::ScopedJavaLocalRef<jobject> Java_SampleForTests_getInnerEnum(
}
static jni_zero::ScopedJavaLocalRef<jobject> Java_SampleForTests_getInnerInterface(JNIEnv* env) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "getInnerInterface");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, nullptr);
@ -476,6 +483,7 @@ static jni_zero::ScopedJavaLocalRef<jthrowable> Java_SampleForTests_getThrowable
JNIEnv* env,
const jni_zero::JavaRef<jobject>& obj,
const jni_zero::JavaRef<jthrowable>& arg0) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "getThrowable");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz, nullptr);
@ -494,6 +502,7 @@ static jni_zero::ScopedJavaLocalRef<jthrowable> Java_SampleForTests_getThrowable
static void Java_SampleForTests_iterateAndDoSomething(
JNIEnv* env,
const jni_zero::JavaRef<jobject>& obj) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "iterateAndDoSomething");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz);
@ -512,6 +521,7 @@ static jint Java_SampleForTests_javaMethod(
const jni_zero::JavaRef<jobject>& obj,
JniIntWrapper _jcaller,
JniIntWrapper ret) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "javaMethod");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz, 0);
@ -537,6 +547,7 @@ static std::vector<int32_t> Java_SampleForTests_jniTypesAndAnnotations(
std::vector<int32_t> const& bar,
JniIntWrapper baz,
long bat) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "jniTypesAndAnnotations");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz, nullptr);
@ -565,6 +576,7 @@ static std::vector<int32_t> Java_SampleForTests_jniTypesAndAnnotations(
static std::vector<jni_zero::ScopedJavaLocalRef<jobject>> Java_SampleForTests_listTest1(
JNIEnv* env,
std::vector<std::string> const& items) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "listTest1");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, nullptr);
@ -585,6 +597,7 @@ static std::vector<jni_zero::ScopedJavaLocalRef<jobject>> Java_SampleForTests_li
static std::map<std::string, std::string> Java_SampleForTests_mapTest1(
JNIEnv* env,
std::map<std::string, std::string> const& arg0) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "mapTest1");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, nullptr);
@ -605,6 +618,7 @@ static std::map<std::string, std::string> Java_SampleForTests_mapTest1(
static void Java_SampleForTests_methodThatThrowsException(
JNIEnv* env,
const jni_zero::JavaRef<jobject>& obj) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "methodThatThrowsException");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz);
@ -621,6 +635,7 @@ static void Java_SampleForTests_methodThatThrowsException(
static jboolean Java_SampleForTests_methodWithAnnotationParamAssignment(
JNIEnv* env,
const jni_zero::JavaRef<jobject>& obj) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "methodWithAnnotationParamAssignment");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz, false);
@ -640,6 +655,7 @@ static void Java_SampleForTests_methodWithGenericParams(
const jni_zero::JavaRef<jobject>& obj,
const jni_zero::JavaRef<jobject>& _env,
const jni_zero::JavaRef<jobject>& bar) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "methodWithGenericParams");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz);
@ -656,6 +672,7 @@ static void Java_SampleForTests_methodWithGenericParams(
static void Java_SampleForTests_packagePrivateJavaMethod(
JNIEnv* env,
const jni_zero::JavaRef<jobject>& obj) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "packagePrivateJavaMethod");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz);
@ -678,6 +695,7 @@ static std::vector<bool> Java_SampleForTests_primitiveArrays(
std::vector<int64_t> const& l,
std::vector<float> const& f,
std::vector<double> const& d) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "primitiveArrays");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, nullptr);
@ -711,6 +729,7 @@ static std::vector<bool> Java_SampleForTests_primitiveArrays(
}
static jboolean Java_SampleForTests_staticJavaMethod(JNIEnv* env) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "staticJavaMethod");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, false);
@ -730,6 +749,7 @@ static jni_zero::ScopedJavaLocalRef<jobject> Java_InnerStructA_create(
jlong l,
JniIntWrapper i,
const jni_zero::JavaRef<jstring>& s) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests$InnerStructA", "create");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_00024InnerStructA_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, nullptr);
@ -745,6 +765,7 @@ static jni_zero::ScopedJavaLocalRef<jobject> Java_InnerStructA_create(
}
static jlong Java_InnerStructB_getKey(JNIEnv* env, const jni_zero::JavaRef<jobject>& obj) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests$InnerStructB", "getKey");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_00024InnerStructB_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz, 0);
@ -762,6 +783,7 @@ static jlong Java_InnerStructB_getKey(JNIEnv* env, const jni_zero::JavaRef<jobje
static jni_zero::ScopedJavaLocalRef<jstring> Java_InnerStructB_getValue(
JNIEnv* env,
const jni_zero::JavaRef<jobject>& obj) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests$InnerStructB", "getValue");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_00024InnerStructB_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz, nullptr);

@ -346,6 +346,7 @@ static jni_zero::ScopedJavaLocalRef<jobject> Java_SampleForTests_Constructor(
JNIEnv* env,
JniIntWrapper foo,
JniIntWrapper bar) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "<init>");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, nullptr);
@ -364,6 +365,7 @@ static jni_zero::ScopedJavaLocalRef<jobject> Java_SampleForTests_addStructA(
JNIEnv* env,
const jni_zero::JavaRef<jobject>& obj,
const jni_zero::JavaRef<jobject>& a) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "addStructA");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz, nullptr);
@ -382,6 +384,7 @@ static jni_zero::ScopedJavaLocalRef<jclass> Java_SampleForTests_getClass(
JNIEnv* env,
const jni_zero::JavaRef<jobject>& obj,
const jni_zero::JavaRef<jclass>& arg0) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "getClass");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz, nullptr);
@ -402,6 +405,7 @@ static std::string Java_SampleForTests_getFirstString(
const jni_zero::JavaRef<jobject>& obj,
std::vector<const char*> const& array,
const char* const& finalArg) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "getFirstString");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz, nullptr);
@ -426,6 +430,7 @@ static std::string Java_SampleForTests_getFirstString(
}
static jni_zero::ScopedJavaLocalRef<jobject> Java_SampleForTests_getInnerEnum(JNIEnv* env) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "getInnerEnum");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, nullptr);
@ -443,6 +448,7 @@ static jni_zero::ScopedJavaLocalRef<jobject> Java_SampleForTests_getInnerEnum(JN
static jni_zero::ScopedJavaLocalRef<jobject> Java_SampleForTests_getInnerEnum(
JNIEnv* env,
JniIntWrapper a) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "getInnerEnum");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, nullptr);
@ -458,6 +464,7 @@ static jni_zero::ScopedJavaLocalRef<jobject> Java_SampleForTests_getInnerEnum(
}
static jni_zero::ScopedJavaLocalRef<jobject> Java_SampleForTests_getInnerInterface(JNIEnv* env) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "getInnerInterface");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, nullptr);
@ -476,6 +483,7 @@ static jni_zero::ScopedJavaLocalRef<jthrowable> Java_SampleForTests_getThrowable
JNIEnv* env,
const jni_zero::JavaRef<jobject>& obj,
const jni_zero::JavaRef<jthrowable>& arg0) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "getThrowable");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz, nullptr);
@ -494,6 +502,7 @@ static jni_zero::ScopedJavaLocalRef<jthrowable> Java_SampleForTests_getThrowable
static void Java_SampleForTests_iterateAndDoSomething(
JNIEnv* env,
const jni_zero::JavaRef<jobject>& obj) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "iterateAndDoSomething");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz);
@ -512,6 +521,7 @@ static jint Java_SampleForTests_javaMethod(
const jni_zero::JavaRef<jobject>& obj,
JniIntWrapper _jcaller,
JniIntWrapper ret) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "javaMethod");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz, 0);
@ -537,6 +547,7 @@ static std::vector<int32_t> Java_SampleForTests_jniTypesAndAnnotations(
std::vector<int32_t> const& bar,
JniIntWrapper baz,
long bat) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "jniTypesAndAnnotations");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz, nullptr);
@ -565,6 +576,7 @@ static std::vector<int32_t> Java_SampleForTests_jniTypesAndAnnotations(
static std::vector<jni_zero::ScopedJavaLocalRef<jobject>> Java_SampleForTests_listTest1(
JNIEnv* env,
std::vector<std::string> const& items) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "listTest1");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, nullptr);
@ -585,6 +597,7 @@ static std::vector<jni_zero::ScopedJavaLocalRef<jobject>> Java_SampleForTests_li
static std::map<std::string, std::string> Java_SampleForTests_mapTest1(
JNIEnv* env,
std::map<std::string, std::string> const& arg0) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "mapTest1");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, nullptr);
@ -605,6 +618,7 @@ static std::map<std::string, std::string> Java_SampleForTests_mapTest1(
static void Java_SampleForTests_methodThatThrowsException(
JNIEnv* env,
const jni_zero::JavaRef<jobject>& obj) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "methodThatThrowsException");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz);
@ -621,6 +635,7 @@ static void Java_SampleForTests_methodThatThrowsException(
static jboolean Java_SampleForTests_methodWithAnnotationParamAssignment(
JNIEnv* env,
const jni_zero::JavaRef<jobject>& obj) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "methodWithAnnotationParamAssignment");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz, false);
@ -640,6 +655,7 @@ static void Java_SampleForTests_methodWithGenericParams(
const jni_zero::JavaRef<jobject>& obj,
const jni_zero::JavaRef<jobject>& _env,
const jni_zero::JavaRef<jobject>& bar) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "methodWithGenericParams");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz);
@ -656,6 +672,7 @@ static void Java_SampleForTests_methodWithGenericParams(
static void Java_SampleForTests_packagePrivateJavaMethod(
JNIEnv* env,
const jni_zero::JavaRef<jobject>& obj) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "packagePrivateJavaMethod");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz);
@ -678,6 +695,7 @@ static std::vector<bool> Java_SampleForTests_primitiveArrays(
std::vector<int64_t> const& l,
std::vector<float> const& f,
std::vector<double> const& d) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "primitiveArrays");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, nullptr);
@ -711,6 +729,7 @@ static std::vector<bool> Java_SampleForTests_primitiveArrays(
}
static jboolean Java_SampleForTests_staticJavaMethod(JNIEnv* env) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests", "staticJavaMethod");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, false);
@ -730,6 +749,7 @@ static jni_zero::ScopedJavaLocalRef<jobject> Java_InnerStructA_create(
jlong l,
JniIntWrapper i,
const jni_zero::JavaRef<jstring>& s) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests$InnerStructA", "create");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_00024InnerStructA_clazz(env);
CHECK_CLAZZ(env, clazz, clazz, nullptr);
@ -745,6 +765,7 @@ static jni_zero::ScopedJavaLocalRef<jobject> Java_InnerStructA_create(
}
static jlong Java_InnerStructB_getKey(JNIEnv* env, const jni_zero::JavaRef<jobject>& obj) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests$InnerStructB", "getKey");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_00024InnerStructB_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz, 0);
@ -762,6 +783,7 @@ static jlong Java_InnerStructB_getKey(JNIEnv* env, const jni_zero::JavaRef<jobje
static jni_zero::ScopedJavaLocalRef<jstring> Java_InnerStructB_getValue(
JNIEnv* env,
const jni_zero::JavaRef<jobject>& obj) {
jni_zero::CallNativeToJavaCallback("this/is/a/package/prefix/org/jni_zero/SampleForTests$InnerStructB", "getValue");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = this_is_a_package_prefix_org_jni_1zero_SampleForTests_00024InnerStructB_clazz(env);
CHECK_CLAZZ(env, obj.obj(), clazz, nullptr);

@ -72,6 +72,7 @@ JNI_ZERO_BOUNDARY_EXPORT void Java_org_jni_1zero_SampleUniqueAnnotations_nativeC
static void Java_SampleUniqueAnnotations_useBar1(
JNIEnv* env,
const jni_zero::JavaRef<jobject>& inner) {
jni_zero::CallNativeToJavaCallback("org/jni_zero/SampleUniqueAnnotations", "useBar1");
static std::atomic<jmethodID> cached_method_id(nullptr);
jclass clazz = org_jni_1zero_SampleUniqueAnnotations_clazz(env);
CHECK_CLAZZ(env, clazz, clazz);