< prev index next >

test/hotspot/jtreg/vmTestbase/nsk/jvmti/AttachOnDemand/attach045/attach045Agent00.cpp

Print this page
rev 51942 : [mq]: refactor


  40 static Options* options = NULL;
  41 static const char* agentName;
  42 
  43 static jrawMonitorID eventsCounterMonitor;
  44 
  45 static volatile int eventsCounter = 0;
  46 
  47 void JNICALL classLoadHandler(
  48         jvmtiEnv *jvmti,
  49         JNIEnv* jni,
  50         jthread thread,
  51         jclass klass) {
  52     char className[MAX_STRING_LENGTH];
  53     int success = 1;
  54 
  55     if (!nsk_jvmti_aod_getClassName(jvmti, klass, className)) {
  56         nsk_jvmti_aod_disableEventAndFinish(agentName, JVMTI_EVENT_CLASS_LOAD, 0, jvmti, jni);
  57         return;
  58     }
  59 
  60     if (NSK_JVMTI_VERIFY(NSK_CPP_STUB2(
  61             RawMonitorEnter, jvmti, eventsCounterMonitor))) {
  62 
  63         eventsCounter++;
  64 
  65         NSK_DISPLAY3("%s: ClassLoad event received for class '%s (eventsCounter: %d)'\n", agentName, className, eventsCounter);
  66 
  67         if (eventsCounter == EXPECTED_EVENTS_NUMBER) {
  68             NSK_DISPLAY2("%s: all expected events were received (eventsCounter: %d)\n", agentName, eventsCounter);
  69             nsk_jvmti_aod_disableEventAndFinish(agentName, JVMTI_EVENT_CLASS_LOAD, success, jvmti, jni);
  70         }
  71 
  72         if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB2(RawMonitorExit, jvmti, eventsCounterMonitor))) {
  73             success = 0;
  74         }
  75     } else {
  76         success = 0;
  77     }
  78 
  79     if (!success) {
  80         nsk_jvmti_aod_disableEventAndFinish(agentName, JVMTI_EVENT_CLASS_LOAD, 0, jvmti, jni);
  81     }
  82 }
  83 
  84 #ifdef STATIC_BUILD
  85 JNIEXPORT jint JNI_OnLoad_attach045Agent00(JavaVM *jvm, char *options, void *reserved) {
  86     return JNI_VERSION_1_8;
  87 }
  88 #endif
  89 
  90 JNIEXPORT jint JNICALL
  91 #ifdef STATIC_BUILD
  92 Agent_OnAttach_attach045Agent00(JavaVM *vm, char *optionsString, void *reserved)
  93 #else
  94 Agent_OnAttach(JavaVM *vm, char *optionsString, void *reserved)
  95 #endif
  96 {
  97     jvmtiEventCallbacks eventCallbacks;
  98     jvmtiEnv* jvmti;
  99     JNIEnv* jni;
 100 
 101     if (!NSK_VERIFY((options = (Options*) nsk_aod_createOptions(optionsString)) != NULL))
 102         return JNI_ERR;
 103 
 104     agentName = nsk_aod_getOptionValue(options, NSK_AOD_AGENT_NAME_OPTION);
 105 
 106     if ((jni = (JNIEnv*) nsk_aod_createJNIEnv(vm)) == NULL)
 107         return JNI_ERR;
 108 
 109     if (!NSK_VERIFY((jvmti = nsk_jvmti_createJVMTIEnv(vm, reserved)) != NULL))
 110         return JNI_ERR;
 111 
 112     if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB3(CreateRawMonitor, jvmti, "attach045-agent00-eventsCounterMonitor", &eventsCounterMonitor))) {
 113         return JNI_ERR;
 114     }
 115 
 116     memset(&eventCallbacks,0, sizeof(eventCallbacks));
 117     eventCallbacks.ClassLoad = classLoadHandler;
 118     if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB3(SetEventCallbacks, jvmti, &eventCallbacks, sizeof(eventCallbacks))) ) {
 119         return JNI_ERR;
 120     }
 121 
 122     if (!(nsk_jvmti_aod_enableEvent(jvmti, JVMTI_EVENT_CLASS_LOAD))) {
 123         return JNI_ERR;
 124     }
 125 
 126     NSK_DISPLAY1("%s: initialization was done\n", agentName);
 127 
 128     if (!NSK_VERIFY(nsk_aod_agentLoaded(jni, agentName)))
 129         return JNI_ERR;
 130 
 131     return JNI_OK;
 132 }
 133 
 134 
 135 }


  40 static Options* options = NULL;
  41 static const char* agentName;
  42 
  43 static jrawMonitorID eventsCounterMonitor;
  44 
  45 static volatile int eventsCounter = 0;
  46 
  47 void JNICALL classLoadHandler(
  48         jvmtiEnv *jvmti,
  49         JNIEnv* jni,
  50         jthread thread,
  51         jclass klass) {
  52     char className[MAX_STRING_LENGTH];
  53     int success = 1;
  54 
  55     if (!nsk_jvmti_aod_getClassName(jvmti, klass, className)) {
  56         nsk_jvmti_aod_disableEventAndFinish(agentName, JVMTI_EVENT_CLASS_LOAD, 0, jvmti, jni);
  57         return;
  58     }
  59 
  60     if (NSK_JVMTI_VERIFY(jvmti->RawMonitorEnter(eventsCounterMonitor))) {

  61 
  62         eventsCounter++;
  63 
  64         NSK_DISPLAY3("%s: ClassLoad event received for class '%s (eventsCounter: %d)'\n", agentName, className, eventsCounter);
  65 
  66         if (eventsCounter == EXPECTED_EVENTS_NUMBER) {
  67             NSK_DISPLAY2("%s: all expected events were received (eventsCounter: %d)\n", agentName, eventsCounter);
  68             nsk_jvmti_aod_disableEventAndFinish(agentName, JVMTI_EVENT_CLASS_LOAD, success, jvmti, jni);
  69         }
  70 
  71         if (!NSK_JVMTI_VERIFY(jvmti->RawMonitorExit(eventsCounterMonitor))) {
  72             success = 0;
  73         }
  74     } else {
  75         success = 0;
  76     }
  77 
  78     if (!success) {
  79         nsk_jvmti_aod_disableEventAndFinish(agentName, JVMTI_EVENT_CLASS_LOAD, 0, jvmti, jni);
  80     }
  81 }
  82 
  83 #ifdef STATIC_BUILD
  84 JNIEXPORT jint JNI_OnLoad_attach045Agent00(JavaVM *jvm, char *options, void *reserved) {
  85     return JNI_VERSION_1_8;
  86 }
  87 #endif
  88 
  89 JNIEXPORT jint JNICALL
  90 #ifdef STATIC_BUILD
  91 Agent_OnAttach_attach045Agent00(JavaVM *vm, char *optionsString, void *reserved)
  92 #else
  93 Agent_OnAttach(JavaVM *vm, char *optionsString, void *reserved)
  94 #endif
  95 {
  96     jvmtiEventCallbacks eventCallbacks;
  97     jvmtiEnv* jvmti;
  98     JNIEnv* jni;
  99 
 100     if (!NSK_VERIFY((options = (Options*) nsk_aod_createOptions(optionsString)) != NULL))
 101         return JNI_ERR;
 102 
 103     agentName = nsk_aod_getOptionValue(options, NSK_AOD_AGENT_NAME_OPTION);
 104 
 105     if ((jni = (JNIEnv*) nsk_aod_createJNIEnv(vm)) == NULL)
 106         return JNI_ERR;
 107 
 108     if (!NSK_VERIFY((jvmti = nsk_jvmti_createJVMTIEnv(vm, reserved)) != NULL))
 109         return JNI_ERR;
 110 
 111     if (!NSK_JVMTI_VERIFY(jvmti->CreateRawMonitor("attach045-agent00-eventsCounterMonitor", &eventsCounterMonitor))) {
 112         return JNI_ERR;
 113     }
 114 
 115     memset(&eventCallbacks,0, sizeof(eventCallbacks));
 116     eventCallbacks.ClassLoad = classLoadHandler;
 117     if (!NSK_JVMTI_VERIFY(jvmti->SetEventCallbacks(&eventCallbacks, sizeof(eventCallbacks))) ) {
 118         return JNI_ERR;
 119     }
 120 
 121     if (!(nsk_jvmti_aod_enableEvent(jvmti, JVMTI_EVENT_CLASS_LOAD))) {
 122         return JNI_ERR;
 123     }
 124 
 125     NSK_DISPLAY1("%s: initialization was done\n", agentName);
 126 
 127     if (!NSK_VERIFY(nsk_aod_agentLoaded(jni, agentName)))
 128         return JNI_ERR;
 129 
 130     return JNI_OK;
 131 }
 132 
 133 
 134 }
< prev index next >