< prev index next >

test/hotspot/jtreg/vmTestbase/nsk/jvmti/scenarios/multienv/MA04/ma04t002/ma04t002.cpp

Print this page
rev 52050 : [mq]: refactor


  64             nsk_jvmti_setFailStatus();
  65         }
  66     }
  67 
  68     return JVMTI_ITERATION_CONTINUE;
  69 }
  70 
  71 /* ========================================================================== */
  72 
  73 static int prepare(JNIEnv* jni) {
  74     const char* CLASS_NAME = "nsk/jvmti/scenarios/multienv/MA04/ma04t002";
  75     const char* FIELD_NAME = "testedObject1";
  76     const char* FIELD_SIGNATURE = "Ljava/lang/Object;";
  77     const char* INSTANCE_NAME = "testedInstance1";
  78     const char* INSTANCE_SIGNATURE = "Lnsk/jvmti/scenarios/multienv/MA04/ma04t002;";
  79     jfieldID fid = NULL;
  80 
  81     NSK_DISPLAY0("Obtain tested object from a static field of debugee class\n");
  82 
  83     NSK_DISPLAY1("Find class: %s\n", CLASS_NAME);
  84     if (!NSK_JNI_VERIFY(jni, (testedClass =
  85             NSK_CPP_STUB2(FindClass, jni, CLASS_NAME)) != NULL))
  86         return NSK_FALSE;
  87 
  88     if (!NSK_JNI_VERIFY(jni, (testedClass = (jclass)
  89             NSK_CPP_STUB2(NewGlobalRef, jni, testedClass)) != NULL))
  90         return NSK_FALSE;
  91 
  92     NSK_DISPLAY2("Find field: %s:%s\n", FIELD_NAME, FIELD_SIGNATURE);
  93     if (!NSK_JNI_VERIFY(jni, (fid =
  94             NSK_CPP_STUB4(GetStaticFieldID, jni, testedClass,
  95                 FIELD_NAME, FIELD_SIGNATURE)) != NULL))
  96         return NSK_FALSE;
  97 
  98     if (!NSK_JNI_VERIFY(jni, (testedObject =
  99             NSK_CPP_STUB3(GetStaticObjectField, jni, testedClass, fid)) != NULL))
 100         return NSK_FALSE;
 101 
 102     NSK_DISPLAY2("Find class instance: %s:%s\n",
 103         INSTANCE_NAME, INSTANCE_SIGNATURE);
 104     if (!NSK_JNI_VERIFY(jni, (fid =
 105             NSK_CPP_STUB4(GetStaticFieldID, jni, testedClass,
 106                 INSTANCE_NAME, INSTANCE_SIGNATURE)) != NULL))
 107         return NSK_FALSE;
 108 
 109     if (!NSK_JNI_VERIFY(jni, (testedInstance =
 110             NSK_CPP_STUB3(GetStaticObjectField, jni, testedClass, fid)) != NULL))
 111         return NSK_FALSE;
 112 
 113     return NSK_TRUE;
 114 }
 115 
 116 /* ========================================================================== */
 117 
 118 /** Agent algorithm. */
 119 static void JNICALL
 120 agentProc(jvmtiEnv* jvmti, JNIEnv* jni, void* arg) {
 121     jint dummy;
 122 
 123     if (!nsk_jvmti_waitForSync(timeout))
 124         return;
 125 
 126     if (!prepare(jni)) {
 127         nsk_jvmti_setFailStatus();
 128         return;
 129     }
 130 
 131     NSK_DISPLAY0("Testcase #1: check that there are no tagged objects\n");
 132 
 133     ObjectsCount = 0;
 134     if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB4(IterateOverHeap, jvmti,
 135             JVMTI_HEAP_OBJECT_EITHER, heap_object_callback, &dummy))) {
 136         nsk_jvmti_setFailStatus();
 137         return;
 138     }
 139     NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
 140     if (ObjectsCount != 0) {
 141         NSK_COMPLAIN1("Some objects were unexpectedly tagged: %d\n",
 142             ObjectsCount);
 143         nsk_jvmti_setFailStatus();
 144     }
 145 
 146     ObjectsCount = 0;
 147     if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB4(IterateOverHeap, jvmti,
 148             JVMTI_HEAP_OBJECT_TAGGED, heap_object_callback, &dummy))) {
 149         nsk_jvmti_setFailStatus();
 150         return;
 151     }
 152     NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
 153     if (ObjectsCount != 0) {
 154         NSK_COMPLAIN1("Some objects were unexpectedly tagged: %d\n",
 155             ObjectsCount);
 156         nsk_jvmti_setFailStatus();
 157     }
 158 
 159     ObjectsCount = 0;
 160     if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB5(IterateOverInstancesOfClass, jvmti,
 161             testedClass, JVMTI_HEAP_OBJECT_EITHER, heap_object_callback, &dummy))) {


 162         nsk_jvmti_setFailStatus();
 163         return;
 164     }
 165     NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
 166     if (ObjectsCount != 0) {
 167         NSK_COMPLAIN1("Some class instances were unexpectedly tagged: %d\n",
 168             ObjectsCount);
 169         nsk_jvmti_setFailStatus();
 170     }
 171 
 172     ObjectsCount = 0;
 173     if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB5(IterateOverInstancesOfClass, jvmti,
 174             testedClass, JVMTI_HEAP_OBJECT_TAGGED, heap_object_callback, &dummy))) {


 175         nsk_jvmti_setFailStatus();
 176         return;
 177     }
 178     NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
 179     if (ObjectsCount != 0) {
 180         NSK_COMPLAIN1("Some class instances were unexpectedly tagged: %d\n",
 181             ObjectsCount);
 182         nsk_jvmti_setFailStatus();
 183     }
 184 
 185     if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB3(SetTag, jvmti, testedObject,
 186             SAMPLE_TAG))) {
 187         nsk_jvmti_setFailStatus();
 188         return;
 189     }
 190 
 191     if (!NSK_VERIFY(nsk_jvmti_resumeSync()))
 192         return;
 193     if (!NSK_VERIFY(nsk_jvmti_waitForSync(timeout)))
 194         return;
 195 
 196 
 197     NSK_DISPLAY0("Testcase #2: check that there is only one object tagged\n");
 198 
 199     ObjectsCount = 0;
 200     if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB4(IterateOverHeap, jvmti,
 201             JVMTI_HEAP_OBJECT_EITHER, heap_object_callback, &dummy))) {
 202         nsk_jvmti_setFailStatus();
 203         return;
 204     }
 205     NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
 206     if (ObjectsCount != 1) {
 207         NSK_COMPLAIN1("Expected 1 object to be tagged: %d\n", ObjectsCount);
 208         nsk_jvmti_setFailStatus();
 209     }
 210 
 211     ObjectsCount = 0;
 212     if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB4(IterateOverHeap, jvmti,
 213             JVMTI_HEAP_OBJECT_TAGGED, heap_object_callback, &dummy))) {
 214         nsk_jvmti_setFailStatus();
 215         return;
 216     }
 217     NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
 218     if (ObjectsCount != 1) {
 219         NSK_COMPLAIN1("Expected 1 object to be tagged: %d\n", ObjectsCount);
 220         nsk_jvmti_setFailStatus();
 221     }
 222 
 223     ObjectsCount = 0;
 224     if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB4(IterateOverHeap, jvmti,
 225             JVMTI_HEAP_OBJECT_UNTAGGED, heap_object_callback, &dummy))) {
 226         nsk_jvmti_setFailStatus();
 227         return;
 228     }
 229     NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
 230     if (ObjectsCount != 0) {
 231         NSK_COMPLAIN1("Some tagged objects were unexpectedly shown as untagged: %d\n",
 232             ObjectsCount);
 233         nsk_jvmti_setFailStatus();
 234     }
 235 
 236     if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB3(SetTag, jvmti, testedInstance,
 237             SAMPLE_TAG))) {
 238         nsk_jvmti_setFailStatus();
 239         return;
 240     }
 241 
 242     if (!NSK_VERIFY(nsk_jvmti_resumeSync()))
 243         return;
 244     if (!NSK_VERIFY(nsk_jvmti_waitForSync(timeout)))
 245         return;
 246 
 247 
 248     NSK_DISPLAY0("Testcase #3: check that there is only one class object tagged\n");
 249 
 250     ObjectsCount = 0;
 251     if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB5(IterateOverInstancesOfClass, jvmti,
 252             testedClass, JVMTI_HEAP_OBJECT_EITHER, heap_object_callback, &dummy))) {


 253         nsk_jvmti_setFailStatus();
 254         return;
 255     }
 256     NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
 257     if (ObjectsCount != 1) {
 258         NSK_COMPLAIN1("Expected 1 class instance to be tagged: %d\n",
 259             ObjectsCount);
 260         nsk_jvmti_setFailStatus();
 261     }
 262 
 263     ObjectsCount = 0;
 264     if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB5(IterateOverInstancesOfClass, jvmti,
 265             testedClass, JVMTI_HEAP_OBJECT_EITHER, heap_object_callback, &dummy))) {


 266         nsk_jvmti_setFailStatus();
 267         return;
 268     }
 269     NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
 270     if (ObjectsCount != 1) {
 271         NSK_COMPLAIN1("Expected 1 class instance to be tagged: %d\n",
 272             ObjectsCount);
 273         nsk_jvmti_setFailStatus();
 274     }
 275 
 276     ObjectsCount = 0;
 277     if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB4(IterateOverHeap, jvmti,
 278             JVMTI_HEAP_OBJECT_UNTAGGED, heap_object_callback, &dummy))) {
 279         nsk_jvmti_setFailStatus();
 280         return;
 281     }
 282     NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
 283     if (ObjectsCount != 0) {
 284         NSK_COMPLAIN1("Some tagged class instances were unexpectedly shown as untagged: %d\n",
 285             ObjectsCount);
 286         nsk_jvmti_setFailStatus();
 287     }
 288 
 289 
 290     NSK_TRACE(NSK_CPP_STUB2(DeleteGlobalRef, jni, testedClass));
 291 
 292     if (!nsk_jvmti_resumeSync())
 293         return;
 294 }
 295 
 296 /* ========================================================================== */
 297 
 298 /** Agent library initialization. */
 299 #ifdef STATIC_BUILD
 300 JNIEXPORT jint JNICALL Agent_OnLoad_ma04t002(JavaVM *jvm, char *options, void *reserved) {
 301     return Agent_Initialize(jvm, options, reserved);
 302 }
 303 JNIEXPORT jint JNICALL Agent_OnAttach_ma04t002(JavaVM *jvm, char *options, void *reserved) {
 304     return Agent_Initialize(jvm, options, reserved);
 305 }
 306 JNIEXPORT jint JNI_OnLoad_ma04t002(JavaVM *jvm, char *options, void *reserved) {
 307     return JNI_VERSION_1_8;
 308 }
 309 #endif
 310 jint Agent_Initialize(JavaVM *jvm, char *options, void *reserved) {
 311     jvmtiEnv* jvmti = NULL;
 312     jvmtiEventCallbacks callbacks;
 313     jvmtiCapabilities caps;
 314 
 315     NSK_DISPLAY0("Agent_OnLoad\n");
 316 
 317     if (!NSK_VERIFY(nsk_jvmti_parseOptions(options)))
 318         return JNI_ERR;
 319 
 320     timeout = nsk_jvmti_getWaitTime() * 60 * 1000;
 321 
 322     if (!NSK_VERIFY((jvmti =
 323             nsk_jvmti_createJVMTIEnv(jvm, reserved)) != NULL))
 324         return JNI_ERR;
 325 
 326     memset(&caps, 0, sizeof(caps));
 327     caps.can_tag_objects = 1;
 328     caps.can_generate_object_free_events = 1;
 329     if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB2(AddCapabilities, jvmti, &caps))) {
 330         return JNI_ERR;
 331     }
 332 
 333     if (!NSK_VERIFY(nsk_jvmti_setAgentProc(agentProc, NULL)))
 334         return JNI_ERR;
 335 
 336     memset(&callbacks, 0, sizeof(callbacks));
 337     if (!NSK_VERIFY(nsk_jvmti_init_MA(&callbacks)))
 338         return JNI_ERR;
 339 
 340     if (!NSK_JVMTI_VERIFY(NSK_CPP_STUB4(SetEventNotificationMode,
 341             jvmti, JVMTI_ENABLE, JVMTI_EVENT_OBJECT_FREE, NULL)))
 342         return JNI_ERR;
 343 
 344     return JNI_OK;
 345 }
 346 
 347 /* ========================================================================== */
 348 
 349 }


  64             nsk_jvmti_setFailStatus();
  65         }
  66     }
  67 
  68     return JVMTI_ITERATION_CONTINUE;
  69 }
  70 
  71 /* ========================================================================== */
  72 
  73 static int prepare(JNIEnv* jni) {
  74     const char* CLASS_NAME = "nsk/jvmti/scenarios/multienv/MA04/ma04t002";
  75     const char* FIELD_NAME = "testedObject1";
  76     const char* FIELD_SIGNATURE = "Ljava/lang/Object;";
  77     const char* INSTANCE_NAME = "testedInstance1";
  78     const char* INSTANCE_SIGNATURE = "Lnsk/jvmti/scenarios/multienv/MA04/ma04t002;";
  79     jfieldID fid = NULL;
  80 
  81     NSK_DISPLAY0("Obtain tested object from a static field of debugee class\n");
  82 
  83     NSK_DISPLAY1("Find class: %s\n", CLASS_NAME);
  84     if (!NSK_JNI_VERIFY(jni, (testedClass = jni->FindClass(CLASS_NAME)) != NULL))

  85         return NSK_FALSE;
  86 
  87     if (!NSK_JNI_VERIFY(jni, (testedClass = (jclass) jni->NewGlobalRef(testedClass)) != NULL))

  88         return NSK_FALSE;
  89 
  90     NSK_DISPLAY2("Find field: %s:%s\n", FIELD_NAME, FIELD_SIGNATURE);
  91     if (!NSK_JNI_VERIFY(jni, (fid =
  92             jni->GetStaticFieldID(testedClass, FIELD_NAME, FIELD_SIGNATURE)) != NULL))

  93         return NSK_FALSE;
  94 
  95     if (!NSK_JNI_VERIFY(jni, (testedObject = jni->GetStaticObjectField(testedClass, fid)) != NULL))

  96         return NSK_FALSE;
  97 
  98     NSK_DISPLAY2("Find class instance: %s:%s\n",
  99         INSTANCE_NAME, INSTANCE_SIGNATURE);
 100     if (!NSK_JNI_VERIFY(jni, (fid =
 101             jni->GetStaticFieldID(testedClass, INSTANCE_NAME, INSTANCE_SIGNATURE)) != NULL))

 102         return NSK_FALSE;
 103 
 104     if (!NSK_JNI_VERIFY(jni, (testedInstance =
 105             jni->GetStaticObjectField(testedClass, fid)) != NULL))
 106         return NSK_FALSE;
 107 
 108     return NSK_TRUE;
 109 }
 110 
 111 /* ========================================================================== */
 112 
 113 /** Agent algorithm. */
 114 static void JNICALL
 115 agentProc(jvmtiEnv* jvmti, JNIEnv* jni, void* arg) {
 116     jint dummy;
 117 
 118     if (!nsk_jvmti_waitForSync(timeout))
 119         return;
 120 
 121     if (!prepare(jni)) {
 122         nsk_jvmti_setFailStatus();
 123         return;
 124     }
 125 
 126     NSK_DISPLAY0("Testcase #1: check that there are no tagged objects\n");
 127 
 128     ObjectsCount = 0;
 129     if (!NSK_JVMTI_VERIFY(jvmti->IterateOverHeap(JVMTI_HEAP_OBJECT_EITHER, heap_object_callback, &dummy))) {

 130         nsk_jvmti_setFailStatus();
 131         return;
 132     }
 133     NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
 134     if (ObjectsCount != 0) {
 135         NSK_COMPLAIN1("Some objects were unexpectedly tagged: %d\n",
 136             ObjectsCount);
 137         nsk_jvmti_setFailStatus();
 138     }
 139 
 140     ObjectsCount = 0;
 141     if (!NSK_JVMTI_VERIFY(jvmti->IterateOverHeap(JVMTI_HEAP_OBJECT_TAGGED, heap_object_callback, &dummy))) {

 142         nsk_jvmti_setFailStatus();
 143         return;
 144     }
 145     NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
 146     if (ObjectsCount != 0) {
 147         NSK_COMPLAIN1("Some objects were unexpectedly tagged: %d\n",
 148             ObjectsCount);
 149         nsk_jvmti_setFailStatus();
 150     }
 151 
 152     ObjectsCount = 0;
 153     if (!NSK_JVMTI_VERIFY(jvmti->IterateOverInstancesOfClass(testedClass,
 154                                                              JVMTI_HEAP_OBJECT_EITHER,
 155                                                              heap_object_callback,
 156                                                              &dummy))) {
 157         nsk_jvmti_setFailStatus();
 158         return;
 159     }
 160     NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
 161     if (ObjectsCount != 0) {
 162         NSK_COMPLAIN1("Some class instances were unexpectedly tagged: %d\n",
 163             ObjectsCount);
 164         nsk_jvmti_setFailStatus();
 165     }
 166 
 167     ObjectsCount = 0;
 168     if (!NSK_JVMTI_VERIFY(jvmti->IterateOverInstancesOfClass(testedClass,
 169                                                              JVMTI_HEAP_OBJECT_TAGGED,
 170                                                              heap_object_callback,
 171                                                              &dummy))) {
 172         nsk_jvmti_setFailStatus();
 173         return;
 174     }
 175     NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
 176     if (ObjectsCount != 0) {
 177         NSK_COMPLAIN1("Some class instances were unexpectedly tagged: %d\n",
 178             ObjectsCount);
 179         nsk_jvmti_setFailStatus();
 180     }
 181 
 182     if (!NSK_JVMTI_VERIFY(jvmti->SetTag(testedObject, SAMPLE_TAG))) {

 183         nsk_jvmti_setFailStatus();
 184         return;
 185     }
 186 
 187     if (!NSK_VERIFY(nsk_jvmti_resumeSync()))
 188         return;
 189     if (!NSK_VERIFY(nsk_jvmti_waitForSync(timeout)))
 190         return;
 191 
 192 
 193     NSK_DISPLAY0("Testcase #2: check that there is only one object tagged\n");
 194 
 195     ObjectsCount = 0;
 196     if (!NSK_JVMTI_VERIFY(
 197             jvmti->IterateOverHeap(JVMTI_HEAP_OBJECT_EITHER, heap_object_callback, &dummy))) {
 198         nsk_jvmti_setFailStatus();
 199         return;
 200     }
 201     NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
 202     if (ObjectsCount != 1) {
 203         NSK_COMPLAIN1("Expected 1 object to be tagged: %d\n", ObjectsCount);
 204         nsk_jvmti_setFailStatus();
 205     }
 206 
 207     ObjectsCount = 0;
 208     if (!NSK_JVMTI_VERIFY(
 209             jvmti->IterateOverHeap(JVMTI_HEAP_OBJECT_TAGGED, heap_object_callback, &dummy))) {
 210         nsk_jvmti_setFailStatus();
 211         return;
 212     }
 213     NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
 214     if (ObjectsCount != 1) {
 215         NSK_COMPLAIN1("Expected 1 object to be tagged: %d\n", ObjectsCount);
 216         nsk_jvmti_setFailStatus();
 217     }
 218 
 219     ObjectsCount = 0;
 220     if (!NSK_JVMTI_VERIFY(jvmti->IterateOverHeap(JVMTI_HEAP_OBJECT_UNTAGGED, heap_object_callback, &dummy))) {

 221         nsk_jvmti_setFailStatus();
 222         return;
 223     }
 224     NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
 225     if (ObjectsCount != 0) {
 226         NSK_COMPLAIN1("Some tagged objects were unexpectedly shown as untagged: %d\n",
 227             ObjectsCount);
 228         nsk_jvmti_setFailStatus();
 229     }
 230 
 231     if (!NSK_JVMTI_VERIFY(jvmti->SetTag(testedInstance, SAMPLE_TAG))) {

 232         nsk_jvmti_setFailStatus();
 233         return;
 234     }
 235 
 236     if (!NSK_VERIFY(nsk_jvmti_resumeSync()))
 237         return;
 238     if (!NSK_VERIFY(nsk_jvmti_waitForSync(timeout)))
 239         return;
 240 
 241 
 242     NSK_DISPLAY0("Testcase #3: check that there is only one class object tagged\n");
 243 
 244     ObjectsCount = 0;
 245     if (!NSK_JVMTI_VERIFY(jvmti->IterateOverInstancesOfClass(testedClass,
 246                                                              JVMTI_HEAP_OBJECT_EITHER,
 247                                                              heap_object_callback,
 248                                                              &dummy))) {
 249         nsk_jvmti_setFailStatus();
 250         return;
 251     }
 252     NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
 253     if (ObjectsCount != 1) {
 254         NSK_COMPLAIN1("Expected 1 class instance to be tagged: %d\n",
 255             ObjectsCount);
 256         nsk_jvmti_setFailStatus();
 257     }
 258 
 259     ObjectsCount = 0;
 260     if (!NSK_JVMTI_VERIFY(jvmti->IterateOverInstancesOfClass(testedClass,
 261                                                              JVMTI_HEAP_OBJECT_EITHER,
 262                                                              heap_object_callback,
 263                                                              &dummy))) {
 264         nsk_jvmti_setFailStatus();
 265         return;
 266     }
 267     NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
 268     if (ObjectsCount != 1) {
 269         NSK_COMPLAIN1("Expected 1 class instance to be tagged: %d\n",
 270             ObjectsCount);
 271         nsk_jvmti_setFailStatus();
 272     }
 273 
 274     ObjectsCount = 0;
 275     if (!NSK_JVMTI_VERIFY(jvmti->IterateOverHeap(JVMTI_HEAP_OBJECT_UNTAGGED, heap_object_callback, &dummy))) {

 276         nsk_jvmti_setFailStatus();
 277         return;
 278     }
 279     NSK_DISPLAY1("ObjectsCount = %d\n", ObjectsCount);
 280     if (ObjectsCount != 0) {
 281         NSK_COMPLAIN1("Some tagged class instances were unexpectedly shown as untagged: %d\n",
 282             ObjectsCount);
 283         nsk_jvmti_setFailStatus();
 284     }
 285 
 286 
 287     NSK_TRACE(jni->DeleteGlobalRef(testedClass));
 288 
 289     if (!nsk_jvmti_resumeSync())
 290         return;
 291 }
 292 
 293 /* ========================================================================== */
 294 
 295 /** Agent library initialization. */
 296 #ifdef STATIC_BUILD
 297 JNIEXPORT jint JNICALL Agent_OnLoad_ma04t002(JavaVM *jvm, char *options, void *reserved) {
 298     return Agent_Initialize(jvm, options, reserved);
 299 }
 300 JNIEXPORT jint JNICALL Agent_OnAttach_ma04t002(JavaVM *jvm, char *options, void *reserved) {
 301     return Agent_Initialize(jvm, options, reserved);
 302 }
 303 JNIEXPORT jint JNI_OnLoad_ma04t002(JavaVM *jvm, char *options, void *reserved) {
 304     return JNI_VERSION_1_8;
 305 }
 306 #endif
 307 jint Agent_Initialize(JavaVM *jvm, char *options, void *reserved) {
 308     jvmtiEnv* jvmti = NULL;
 309     jvmtiEventCallbacks callbacks;
 310     jvmtiCapabilities caps;
 311 
 312     NSK_DISPLAY0("Agent_OnLoad\n");
 313 
 314     if (!NSK_VERIFY(nsk_jvmti_parseOptions(options)))
 315         return JNI_ERR;
 316 
 317     timeout = nsk_jvmti_getWaitTime() * 60 * 1000;
 318 
 319     if (!NSK_VERIFY((jvmti =
 320             nsk_jvmti_createJVMTIEnv(jvm, reserved)) != NULL))
 321         return JNI_ERR;
 322 
 323     memset(&caps, 0, sizeof(caps));
 324     caps.can_tag_objects = 1;
 325     caps.can_generate_object_free_events = 1;
 326     if (!NSK_JVMTI_VERIFY(jvmti->AddCapabilities(&caps))) {
 327         return JNI_ERR;
 328     }
 329 
 330     if (!NSK_VERIFY(nsk_jvmti_setAgentProc(agentProc, NULL)))
 331         return JNI_ERR;
 332 
 333     memset(&callbacks, 0, sizeof(callbacks));
 334     if (!NSK_VERIFY(nsk_jvmti_init_MA(&callbacks)))
 335         return JNI_ERR;
 336 
 337     if (!NSK_JVMTI_VERIFY(jvmti->SetEventNotificationMode(JVMTI_ENABLE, JVMTI_EVENT_OBJECT_FREE, NULL)))

 338         return JNI_ERR;
 339 
 340     return JNI_OK;
 341 }
 342 
 343 /* ========================================================================== */
 344 
 345 }
< prev index next >