< prev index next >

test/hotspot/jtreg/vmTestbase/nsk/jvmti/scenarios/events/EM01/em01t002/em01t002.cpp

Print this page
rev 52233 : 8212884: Remove the assignments in ifs for vmTestbase/[a-s]
Summary:
Reviewed-by:


  48 static int classLoaderCount = 0;
  49 
  50 static jvmtiPhase currentPhase;
  51 
  52 /* ============================================================================= */
  53 /* ============================================================================= */
  54 
  55 
  56 /*
  57  * Class:     nsk_jvmti_scenarios_events_EM01_em01t002
  58  * Method:    loadClass
  59  * Signature: (Lnsk/share/ClassLoader;Ljava/lang/String;)Ljava/lang/Class;
  60  */
  61 JNIEXPORT jclass JNICALL
  62 Java_nsk_jvmti_scenarios_events_EM01_em01t002_loadClass(JNIEnv *jni_env,
  63                         jobject o, jobject loader, jstring className) {
  64     jclass klass;
  65     jmethodID methodID;
  66     jclass loadedClass;
  67 
  68     if (!NSK_JNI_VERIFY(jni_env, (klass = jni_env->GetObjectClass(loader)) != NULL)) {

  69         nsk_jvmti_setFailStatus();
  70         return NULL;
  71     }
  72 
  73     if (!NSK_JNI_VERIFY(jni_env,
  74             (methodID = jni_env->GetMethodID(
  75                 klass, "loadClass", "(Ljava/lang/String;)Ljava/lang/Class;")) != NULL)) {
  76         nsk_jvmti_setFailStatus();
  77         return NULL;
  78     }
  79 
  80     if (!NSK_JNI_VERIFY(jni_env, (loadedClass = (jclass)
  81             jni_env->CallObjectMethod(loader, methodID, className)) != NULL)) {
  82         nsk_jvmti_setFailStatus();
  83         return NULL;
  84     }
  85 
  86     return loadedClass;
  87 }
  88 
  89 /*
  90  * Class:     nsk_jvmti_scenarios_events_EM01_em01t002
  91  * Method:    prepareClass
  92  * Signature: (Ljava/lang/Class;)Z
  93  */
  94 JNIEXPORT jboolean JNICALL
  95 Java_nsk_jvmti_scenarios_events_EM01_em01t002_prepareClass(JNIEnv *jni_env,
  96                         jobject o, jclass klass) {
  97     jfieldID fieldID;
  98 
  99     if (!NSK_JNI_VERIFY(jni_env, (fieldID =
 100             jni_env->GetStaticFieldID(klass, "toProvokePreparation", "I")) != NULL)) {
 101         nsk_jvmti_setFailStatus();
 102         return NSK_FALSE;
 103     }
 104 
 105     return NSK_TRUE;
 106 }
 107 
 108 /*
 109  * Class:     nsk_jvmti_scenarios_events_EM01_em01t002
 110  * Method:    startThread
 111  * Signature: (Ljava/lang/Thread;)Z
 112  */
 113 JNIEXPORT jboolean JNICALL
 114 Java_nsk_jvmti_scenarios_events_EM01_em01t002_startThread(JNIEnv *jni_env,
 115                         jobject o, jobject thread) {
 116     jclass klass;
 117     jmethodID methodID;
 118 
 119     if (!NSK_JNI_VERIFY(jni_env, (klass = jni_env->GetObjectClass(thread)) != NULL)) {

 120         nsk_jvmti_setFailStatus();
 121         return NSK_FALSE;
 122     }
 123 
 124     if (!NSK_JNI_VERIFY(jni_env, (methodID =
 125             jni_env->GetMethodID(klass, "start", "()V")) != NULL)) {
 126         nsk_jvmti_setFailStatus();
 127         return NSK_FALSE;
 128     }
 129 
 130     if (!NSK_JNI_VERIFY_VOID(jni_env,jni_env->CallVoidMethod(thread, methodID)) ) {
 131         nsk_jvmti_setFailStatus();
 132         return NSK_FALSE;
 133     }
 134 
 135     return NSK_TRUE;
 136 }
 137 
 138 /* ============================================================================= */
 139 /* ============================================================================= */
 140 
 141 static void
 142 changeCount(jvmtiEvent event) {
 143 
 144     if (!NSK_JVMTI_VERIFY(jvmti->RawMonitorEnter(syncLock)))
 145         nsk_jvmti_setFailStatus();


 211     }
 212 
 213     if (!NSK_JVMTI_VERIFY(jvmti_env->Deallocate((unsigned char*)className))) {
 214         nsk_jvmti_setFailStatus();
 215     }
 216     if (generic != NULL)
 217         if (!NSK_JVMTI_VERIFY(jvmti_env->Deallocate((unsigned char*)generic))) {
 218             nsk_jvmti_setFailStatus();
 219         }
 220 }
 221 
 222 void
 223 threadEventHandler(jvmtiEvent event, jvmtiEnv* jvmti_env, JNIEnv* jni_env,
 224                             jthread thread) {
 225     jclass classObject;
 226     char *className;
 227     char *generic;
 228     jvmtiPhase phase;
 229 
 230 
 231     if (!NSK_JNI_VERIFY(jni_env, (classObject = jni_env->GetObjectClass(thread)) != NULL)) {

 232         nsk_jvmti_setFailStatus();
 233         return;
 234     }
 235 
 236     if (!NSK_JVMTI_VERIFY(jvmti_env->GetClassSignature(classObject, &className, &generic))) {
 237         nsk_jvmti_setFailStatus();
 238         return;
 239     }
 240 
 241     if (strcmp(className, EXPECTED_CLASS_NAME) == 0) {
 242         changeCount(event);
 243         NSK_DISPLAY3("%25s(%4d)>>\tclass: %s\n",
 244                             TranslateEvent(event),
 245                             eventCount[event - JVMTI_MIN_EVENT_TYPE_VAL],
 246                             className);
 247     }
 248 
 249     if (!NSK_JVMTI_VERIFY(jvmti_env->GetPhase(&phase))) {
 250         nsk_jvmti_setFailStatus();
 251     }


 504 JNIEXPORT jint JNICALL Agent_OnLoad_em01t002(JavaVM *jvm, char *options, void *reserved) {
 505     return Agent_Initialize(jvm, options, reserved);
 506 }
 507 JNIEXPORT jint JNICALL Agent_OnAttach_em01t002(JavaVM *jvm, char *options, void *reserved) {
 508     return Agent_Initialize(jvm, options, reserved);
 509 }
 510 JNIEXPORT jint JNI_OnLoad_em01t002(JavaVM *jvm, char *options, void *reserved) {
 511     return JNI_VERSION_1_8;
 512 }
 513 #endif
 514 jint Agent_Initialize(JavaVM *jvm, char *options, void *reserved) {
 515 
 516     currentPhase = JVMTI_PHASE_ONLOAD;
 517 
 518     if (!NSK_VERIFY(nsk_jvmti_parseOptions(options)))
 519         return JNI_ERR;
 520 
 521     timeout = nsk_jvmti_getWaitTime() * 60 * 1000;
 522     classLoaderCount = nsk_jvmti_findOptionIntValue(CLASS_LOADER_COUNT_PARAM, 10);
 523 
 524     if (!NSK_VERIFY((jvmti = nsk_jvmti_createJVMTIEnv(jvm, reserved)) != NULL))

 525         return JNI_ERR;
 526 
 527     if (!NSK_JVMTI_VERIFY(jvmti->CreateRawMonitor("_syncLock", &syncLock))) {
 528         nsk_jvmti_setFailStatus();
 529         return JNI_ERR;
 530     }
 531 
 532     if (!setCallBacks()) {
 533         return JNI_ERR;
 534     }
 535 
 536     if (!enableEvent(JVMTI_ENABLE, JVMTI_EVENT_CLASS_LOAD)
 537             || !enableEvent(JVMTI_ENABLE, JVMTI_EVENT_CLASS_PREPARE)
 538             || !enableEvent(JVMTI_ENABLE, JVMTI_EVENT_THREAD_START)
 539             || !enableEvent(JVMTI_ENABLE, JVMTI_EVENT_THREAD_END)
 540             || !enableEvent(JVMTI_ENABLE, JVMTI_EVENT_VM_START)
 541             || !enableEvent(JVMTI_ENABLE, JVMTI_EVENT_VM_INIT)
 542             || !enableEvent(JVMTI_ENABLE, JVMTI_EVENT_VM_DEATH)
 543             ) {
 544         NSK_COMPLAIN0("Events could not be enabled");


  48 static int classLoaderCount = 0;
  49 
  50 static jvmtiPhase currentPhase;
  51 
  52 /* ============================================================================= */
  53 /* ============================================================================= */
  54 
  55 
  56 /*
  57  * Class:     nsk_jvmti_scenarios_events_EM01_em01t002
  58  * Method:    loadClass
  59  * Signature: (Lnsk/share/ClassLoader;Ljava/lang/String;)Ljava/lang/Class;
  60  */
  61 JNIEXPORT jclass JNICALL
  62 Java_nsk_jvmti_scenarios_events_EM01_em01t002_loadClass(JNIEnv *jni_env,
  63                         jobject o, jobject loader, jstring className) {
  64     jclass klass;
  65     jmethodID methodID;
  66     jclass loadedClass;
  67 
  68     klass = jni_env->GetObjectClass(loader);
  69     if (!NSK_JNI_VERIFY(jni_env, klass != NULL)) {
  70         nsk_jvmti_setFailStatus();
  71         return NULL;
  72     }
  73 
  74     methodID = jni_env->GetMethodID(
  75                 klass, "loadClass", "(Ljava/lang/String;)Ljava/lang/Class;");
  76     if (!NSK_JNI_VERIFY(jni_env, methodID != NULL)) {
  77         nsk_jvmti_setFailStatus();
  78         return NULL;
  79     }
  80 
  81     loadedClass = (jclass) jni_env->CallObjectMethod(loader, methodID, className);
  82     if (!NSK_JNI_VERIFY(jni_env, loadedClass != NULL)) {
  83         nsk_jvmti_setFailStatus();
  84         return NULL;
  85     }
  86 
  87     return loadedClass;
  88 }
  89 
  90 /*
  91  * Class:     nsk_jvmti_scenarios_events_EM01_em01t002
  92  * Method:    prepareClass
  93  * Signature: (Ljava/lang/Class;)Z
  94  */
  95 JNIEXPORT jboolean JNICALL
  96 Java_nsk_jvmti_scenarios_events_EM01_em01t002_prepareClass(JNIEnv *jni_env,
  97                         jobject o, jclass klass) {
  98     jfieldID fieldID;
  99 
 100     fieldID = jni_env->GetStaticFieldID(klass, "toProvokePreparation", "I");
 101     if (!NSK_JNI_VERIFY(jni_env, fieldID != NULL)) {
 102         nsk_jvmti_setFailStatus();
 103         return NSK_FALSE;
 104     }
 105 
 106     return NSK_TRUE;
 107 }
 108 
 109 /*
 110  * Class:     nsk_jvmti_scenarios_events_EM01_em01t002
 111  * Method:    startThread
 112  * Signature: (Ljava/lang/Thread;)Z
 113  */
 114 JNIEXPORT jboolean JNICALL
 115 Java_nsk_jvmti_scenarios_events_EM01_em01t002_startThread(JNIEnv *jni_env,
 116                         jobject o, jobject thread) {
 117     jclass klass;
 118     jmethodID methodID;
 119 
 120     klass = jni_env->GetObjectClass(thread);
 121     if (!NSK_JNI_VERIFY(jni_env, klass != NULL)) {
 122         nsk_jvmti_setFailStatus();
 123         return NSK_FALSE;
 124     }
 125 
 126     methodID = jni_env->GetMethodID(klass, "start", "()V");
 127     if (!NSK_JNI_VERIFY(jni_env, methodID != NULL)) {
 128         nsk_jvmti_setFailStatus();
 129         return NSK_FALSE;
 130     }
 131 
 132     if (!NSK_JNI_VERIFY_VOID(jni_env,jni_env->CallVoidMethod(thread, methodID)) ) {
 133         nsk_jvmti_setFailStatus();
 134         return NSK_FALSE;
 135     }
 136 
 137     return NSK_TRUE;
 138 }
 139 
 140 /* ============================================================================= */
 141 /* ============================================================================= */
 142 
 143 static void
 144 changeCount(jvmtiEvent event) {
 145 
 146     if (!NSK_JVMTI_VERIFY(jvmti->RawMonitorEnter(syncLock)))
 147         nsk_jvmti_setFailStatus();


 213     }
 214 
 215     if (!NSK_JVMTI_VERIFY(jvmti_env->Deallocate((unsigned char*)className))) {
 216         nsk_jvmti_setFailStatus();
 217     }
 218     if (generic != NULL)
 219         if (!NSK_JVMTI_VERIFY(jvmti_env->Deallocate((unsigned char*)generic))) {
 220             nsk_jvmti_setFailStatus();
 221         }
 222 }
 223 
 224 void
 225 threadEventHandler(jvmtiEvent event, jvmtiEnv* jvmti_env, JNIEnv* jni_env,
 226                             jthread thread) {
 227     jclass classObject;
 228     char *className;
 229     char *generic;
 230     jvmtiPhase phase;
 231 
 232 
 233     classObject = jni_env->GetObjectClass(thread);
 234     if (!NSK_JNI_VERIFY(jni_env, classObject != NULL)) {
 235         nsk_jvmti_setFailStatus();
 236         return;
 237     }
 238 
 239     if (!NSK_JVMTI_VERIFY(jvmti_env->GetClassSignature(classObject, &className, &generic))) {
 240         nsk_jvmti_setFailStatus();
 241         return;
 242     }
 243 
 244     if (strcmp(className, EXPECTED_CLASS_NAME) == 0) {
 245         changeCount(event);
 246         NSK_DISPLAY3("%25s(%4d)>>\tclass: %s\n",
 247                             TranslateEvent(event),
 248                             eventCount[event - JVMTI_MIN_EVENT_TYPE_VAL],
 249                             className);
 250     }
 251 
 252     if (!NSK_JVMTI_VERIFY(jvmti_env->GetPhase(&phase))) {
 253         nsk_jvmti_setFailStatus();
 254     }


 507 JNIEXPORT jint JNICALL Agent_OnLoad_em01t002(JavaVM *jvm, char *options, void *reserved) {
 508     return Agent_Initialize(jvm, options, reserved);
 509 }
 510 JNIEXPORT jint JNICALL Agent_OnAttach_em01t002(JavaVM *jvm, char *options, void *reserved) {
 511     return Agent_Initialize(jvm, options, reserved);
 512 }
 513 JNIEXPORT jint JNI_OnLoad_em01t002(JavaVM *jvm, char *options, void *reserved) {
 514     return JNI_VERSION_1_8;
 515 }
 516 #endif
 517 jint Agent_Initialize(JavaVM *jvm, char *options, void *reserved) {
 518 
 519     currentPhase = JVMTI_PHASE_ONLOAD;
 520 
 521     if (!NSK_VERIFY(nsk_jvmti_parseOptions(options)))
 522         return JNI_ERR;
 523 
 524     timeout = nsk_jvmti_getWaitTime() * 60 * 1000;
 525     classLoaderCount = nsk_jvmti_findOptionIntValue(CLASS_LOADER_COUNT_PARAM, 10);
 526 
 527     jvmti = nsk_jvmti_createJVMTIEnv(jvm, reserved);
 528     if (!NSK_VERIFY(jvmti != NULL))
 529         return JNI_ERR;
 530 
 531     if (!NSK_JVMTI_VERIFY(jvmti->CreateRawMonitor("_syncLock", &syncLock))) {
 532         nsk_jvmti_setFailStatus();
 533         return JNI_ERR;
 534     }
 535 
 536     if (!setCallBacks()) {
 537         return JNI_ERR;
 538     }
 539 
 540     if (!enableEvent(JVMTI_ENABLE, JVMTI_EVENT_CLASS_LOAD)
 541             || !enableEvent(JVMTI_ENABLE, JVMTI_EVENT_CLASS_PREPARE)
 542             || !enableEvent(JVMTI_ENABLE, JVMTI_EVENT_THREAD_START)
 543             || !enableEvent(JVMTI_ENABLE, JVMTI_EVENT_THREAD_END)
 544             || !enableEvent(JVMTI_ENABLE, JVMTI_EVENT_VM_START)
 545             || !enableEvent(JVMTI_ENABLE, JVMTI_EVENT_VM_INIT)
 546             || !enableEvent(JVMTI_ENABLE, JVMTI_EVENT_VM_DEATH)
 547             ) {
 548         NSK_COMPLAIN0("Events could not be enabled");
< prev index next >