< prev index next >
test/hotspot/jtreg/vmTestbase/nsk/jvmti/scenarios/extension/EX03/ex03t001/ex03t001.cpp
Print this page
*** 39,60 ****
/* ============================================================================= */
static void JNICALL
! ClassUnload(jvmtiEnv* jvmti_env, JNIEnv *jni_env, jthread thread, jclass klass, ...) {
! /*
! * With the CMS GC the event can be posted on
! * a ConcurrentGC thread that is not a JavaThread.
! * In this case the thread argument can be NULL, so that,
! * we should not expect the thread argument to be non-NULL.
! */
! if (klass == NULL) {
nsk_jvmti_setFailStatus();
! NSK_COMPLAIN0("ClassUnload: 'klass' input parameter is NULL.\n");
!
}
NSK_DISPLAY0("Received ClassUnload event.\n");
if (eventEnabled == JNI_TRUE) {
eventReceived1 = JNI_TRUE;
} else {
eventReceived2 = JNI_TRUE;
--- 39,57 ----
/* ============================================================================= */
static void JNICALL
! ClassUnload(jvmtiEnv* jvmti_env, JNIEnv* jni_env, const char* name, ...) {
! // The name argument should never be null
! if (name == NULL) {
nsk_jvmti_setFailStatus();
! NSK_COMPLAIN0("ClassUnload: 'name' input parameter is NULL.\n");
! } else {
! NSK_DISPLAY1("Class unloaded %s\n", name);
}
+
NSK_DISPLAY0("Received ClassUnload event.\n");
if (eventEnabled == JNI_TRUE) {
eventReceived1 = JNI_TRUE;
} else {
eventReceived2 = JNI_TRUE;
*** 105,114 ****
--- 102,125 ----
}
return enabled;
}
+ jboolean checkParams(jvmtiExtensionEventInfo event) {
+ // Check parameters are:
+ // JNIEnv *jni_env, const char* name
+ if (event.param_count != 2 ||
+ event.params[0].kind != JVMTI_KIND_IN_PTR ||
+ event.params[0].base_type != JVMTI_TYPE_JNIENV ||
+ event.params[1].kind != JVMTI_KIND_IN_PTR ||
+ event.params[1].base_type != JVMTI_TYPE_CCHAR) {
+ return JNI_FALSE;
+ } else {
+ return JNI_TRUE;
+ }
+ }
+
jboolean enableClassUnloadEvent (jboolean enable) {
jint extCount, i;
jvmtiExtensionEventInfo* extList;
jboolean found = JNI_FALSE;
*** 120,129 ****
--- 131,148 ----
for (i = 0; i < extCount; i++) {
if (strcmp(extList[i].id, (char*)"com.sun.hotspot.events.ClassUnload") == 0) {
found = JNI_TRUE;
+ NSK_DISPLAY1("%s", extList[i].short_description);
+
+ if (!checkParams(extList[i])) {
+ NSK_COMPLAIN0("ClassUnload event has wrong parameters.");
+ nsk_jvmti_setFailStatus();
+ return JNI_FALSE;
+ }
+
if (!NSK_JVMTI_VERIFY(
jvmti->SetExtensionEventCallback(extList[i].extension_event_index,
enable ? (jvmtiExtensionEvent)ClassUnload : NULL))) {
nsk_jvmti_setFailStatus();
return JNI_FALSE;
< prev index next >