Skip to content

Commit c4970be

Browse files
committed
feat: add @CriticalNative and @FastNative to safe methods
1 parent e924542 commit c4970be

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

test-app/runtime/src/main/cpp/com_tns_Runtime.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* reserved) {
2525
return JNI_VERSION_1_6;
2626
}
2727

28+
// @FastNative signature - optimized JNI, keeps JNIEnv* for jstring handling
2829
extern "C" JNIEXPORT void Java_com_tns_Runtime_SetManualInstrumentationMode(JNIEnv* _env, jobject obj, jstring mode) {
2930
try {
3031
Runtime::SetManualInstrumentationMode(mode);
@@ -214,13 +215,14 @@ extern "C" JNIEXPORT void Java_com_tns_Runtime_createJSInstanceNative(JNIEnv* _e
214215
}
215216
}
216217

217-
extern "C" JNIEXPORT jint Java_com_tns_Runtime_generateNewObjectId(JNIEnv* env, jobject obj, jint runtimeId) {
218+
// @CriticalNative signature - no JNIEnv* or jobject parameters
219+
extern "C" JNIEXPORT jint Java_com_tns_Runtime_generateNewObjectId(jint runtimeId) {
218220
try {
219221
auto runtime = TryGetRuntime(runtimeId);
220222
if (runtime == nullptr) {
221223
return 0;
222224
}
223-
return runtime->GenerateNewObjectId(env, obj);
225+
return runtime->GenerateNewObjectId(nullptr, nullptr);
224226
} catch (NativeScriptException& e) {
225227
e.ReThrowToJava();
226228
} catch (std::exception e) {
@@ -236,6 +238,7 @@ extern "C" JNIEXPORT jint Java_com_tns_Runtime_generateNewObjectId(JNIEnv* env,
236238
return 0;
237239
}
238240

241+
// @FastNative signature - optimized JNI, keeps JNIEnv* for NotifyGC
239242
extern "C" JNIEXPORT jboolean Java_com_tns_Runtime_notifyGc(JNIEnv* env, jobject obj, jint runtimeId) {
240243
auto runtime = TryGetRuntime(runtimeId);
241244
if (runtime == nullptr) {
@@ -288,11 +291,13 @@ extern "C" JNIEXPORT void Java_com_tns_Runtime_passExceptionToJsNative(JNIEnv* e
288291
}
289292
}
290293

291-
extern "C" JNIEXPORT jint Java_com_tns_Runtime_getPointerSize(JNIEnv* env, jobject obj) {
294+
// @CriticalNative signature - no JNIEnv* or jobject parameters
295+
extern "C" JNIEXPORT jint Java_com_tns_Runtime_getPointerSize() {
292296
return sizeof(void*);
293297
}
294298

295-
extern "C" JNIEXPORT jint Java_com_tns_Runtime_getCurrentRuntimeId(JNIEnv* _env, jobject obj) {
299+
// @CriticalNative signature - no JNIEnv* or jobject parameters
300+
extern "C" JNIEXPORT jint Java_com_tns_Runtime_getCurrentRuntimeId() {
296301
Isolate* isolate = Isolate::TryGetCurrent();
297302
if (isolate == nullptr) {
298303
return -1;

test-app/runtime/src/main/java/com/tns/Runtime.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@
3535
import java.util.concurrent.FutureTask;
3636
import java.util.concurrent.RunnableFuture;
3737
import java.util.concurrent.atomic.AtomicInteger;
38+
import dalvik.annotation.optimization.CriticalNative;
39+
import dalvik.annotation.optimization.FastNative;
3840

3941
public class Runtime {
4042
private native void initNativeScript(int runtimeId, String filesPath, String nativeLibDir, boolean verboseLoggingEnabled, boolean isDebuggable, String packageName,
@@ -50,8 +52,10 @@ private native void initNativeScript(int runtimeId, String filesPath, String nat
5052

5153
private native void createJSInstanceNative(int runtimeId, Object javaObject, int javaObjectID, String canonicalName);
5254

55+
@CriticalNative
5356
private native int generateNewObjectId(int runtimeId);
5457

58+
@FastNative
5559
private native boolean notifyGc(int runtimeId);
5660

5761
private native void lock(int runtimeId);
@@ -60,10 +64,13 @@ private native void initNativeScript(int runtimeId, String filesPath, String nat
6064

6165
private native void passExceptionToJsNative(int runtimeId, Throwable ex, String message, String fullStackTrace, String jsStackTrace, boolean isDiscarded);
6266

67+
@CriticalNative
6368
private static native int getCurrentRuntimeId();
6469

70+
@CriticalNative
6571
public static native int getPointerSize();
6672

73+
@FastNative
6774
public static native void SetManualInstrumentationMode(String mode);
6875

6976
private static native void WorkerGlobalOnMessageCallback(int runtimeId, String message);

0 commit comments

Comments
 (0)