96 } |
96 } |
97 |
97 |
98 #define ATTACH022_TARGET_APP_CLASS_NAME "nsk/jvmti/AttachOnDemand/attach022/attach022Target" |
98 #define ATTACH022_TARGET_APP_CLASS_NAME "nsk/jvmti/AttachOnDemand/attach022/attach022Target" |
99 |
99 |
100 void registerNativeMethods(JNIEnv* jni_env) { |
100 void registerNativeMethods(JNIEnv* jni_env) { |
101 ExceptionCheckingJniEnvPtr jni(jni_env); |
101 ExceptionCheckingJniEnvPtr ec_jni(jni_env); |
102 jclass appClass; |
102 jclass appClass; |
103 JNINativeMethod nativeMethods[] = { |
103 JNINativeMethod nativeMethods[] = { |
104 { (char*)"shutdownAgent", (char*)"(I)Z", |
104 { (char*)"shutdownAgent", (char*)"(I)Z", |
105 (void*) Java_nsk_jvmti_AttachOnDemand_attach022_attach022Target_shutdownAgent } }; |
105 (void*) Java_nsk_jvmti_AttachOnDemand_attach022_attach022Target_shutdownAgent } }; |
106 jint nativeMethodsNumber = 1; |
106 jint nativeMethodsNumber = 1; |
107 |
107 |
108 appClass = jni->FindClass(ATTACH022_TARGET_APP_CLASS_NAME, TRACE_JNI_CALL); |
108 appClass = ec_jni->FindClass(ATTACH022_TARGET_APP_CLASS_NAME, TRACE_JNI_CALL); |
109 jni->RegisterNatives(appClass, nativeMethods, nativeMethodsNumber, TRACE_JNI_CALL); |
109 ec_jni->RegisterNatives(appClass, nativeMethods, nativeMethodsNumber, TRACE_JNI_CALL); |
110 } |
110 } |
111 |
111 |
112 void JNICALL vmObjectAllocHandler(jvmtiEnv * jvmti, |
112 void JNICALL vmObjectAllocHandler(jvmtiEnv * jvmti, |
113 JNIEnv * jni, |
113 JNIEnv * jni, |
114 jthread thread, |
114 jthread thread, |