442 if (!NSK_JVMTI_VERIFY(jvmti->SetEventCallbacks(&eventCallbacks, sizeof(eventCallbacks))))
443 return NSK_FALSE;
444
445 return NSK_TRUE;
446 }
447
448 /* ============================================================================= */
449
450 /** Agent algorithm. */
451 static void JNICALL
452 agentProc(jvmtiEnv* jvmti, JNIEnv* agentJNI, void* arg) {
453
454 int i;
455 jfieldID field_accID, field_modID;
456 jclass cls;
457
458
459 if (!nsk_jvmti_waitForSync(timeout))
460 return;
461
462 if (!NSK_JNI_VERIFY(agentJNI, (cls = agentJNI->FindClass(CLASS_NAME)) != NULL))
463 return;
464
465 if (!NSK_JNI_VERIFY(agentJNI, (field_accID =
466 agentJNI->GetStaticFieldID(cls, FIELD_ACC_NAME, "I")) != NULL))
467 return;
468
469 if (!NSK_JNI_VERIFY(agentJNI, (field_modID =
470 agentJNI->GetStaticFieldID(cls, FIELD_MOD_NAME, "I")) != NULL))
471 return;
472
473 if (!NSK_JVMTI_VERIFY(jvmti->SetFieldModificationWatch(cls, field_modID)))
474 return;
475
476 if (!NSK_JVMTI_VERIFY(jvmti->SetFieldAccessWatch(cls, field_accID)))
477 return;
478
479 if (!nsk_jvmti_resumeSync())
480 return;
481
482 for (i = 1; i <= STEP_NUMBER; i++) {
483
484 if (!nsk_jvmti_waitForSync(timeout))
485 return;
486
487 if (i < STEP_NUMBER) {
488 showEventStatistics(i);
489 if (!checkEvents(i))
490 nsk_jvmti_setFailStatus();
504
505 /** Agent library initialization. */
506 #ifdef STATIC_BUILD
507 JNIEXPORT jint JNICALL Agent_OnLoad_em02t010(JavaVM *jvm, char *options, void *reserved) {
508 return Agent_Initialize(jvm, options, reserved);
509 }
510 JNIEXPORT jint JNICALL Agent_OnAttach_em02t010(JavaVM *jvm, char *options, void *reserved) {
511 return Agent_Initialize(jvm, options, reserved);
512 }
513 JNIEXPORT jint JNI_OnLoad_em02t010(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 if (!NSK_VERIFY(nsk_jvmti_parseOptions(options)))
520 return JNI_ERR;
521
522 timeout = nsk_jvmti_getWaitTime() * 60 * 1000;
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 {
533 jvmtiCapabilities caps;
534 memset(&caps, 0, sizeof(caps));
535
536 caps.can_generate_field_modification_events = 1;
537 caps.can_generate_field_access_events = 1;
538 if (!NSK_JVMTI_VERIFY(jvmti->AddCapabilities(&caps)))
539 return JNI_ERR;
540 }
541
542 if (!setCallBacks(1)) {
543 return JNI_ERR;
544 }
|
442 if (!NSK_JVMTI_VERIFY(jvmti->SetEventCallbacks(&eventCallbacks, sizeof(eventCallbacks))))
443 return NSK_FALSE;
444
445 return NSK_TRUE;
446 }
447
448 /* ============================================================================= */
449
450 /** Agent algorithm. */
451 static void JNICALL
452 agentProc(jvmtiEnv* jvmti, JNIEnv* agentJNI, void* arg) {
453
454 int i;
455 jfieldID field_accID, field_modID;
456 jclass cls;
457
458
459 if (!nsk_jvmti_waitForSync(timeout))
460 return;
461
462 cls = agentJNI->FindClass(CLASS_NAME);
463 if (!NSK_JNI_VERIFY(agentJNI, cls != NULL))
464 return;
465
466 field_accID = agentJNI->GetStaticFieldID(cls, FIELD_ACC_NAME, "I");
467 if (!NSK_JNI_VERIFY(agentJNI, field_accID != NULL))
468 return;
469
470 field_modID = agentJNI->GetStaticFieldID(cls, FIELD_MOD_NAME, "I");
471 if (!NSK_JNI_VERIFY(agentJNI, field_modID != NULL))
472 return;
473
474 if (!NSK_JVMTI_VERIFY(jvmti->SetFieldModificationWatch(cls, field_modID)))
475 return;
476
477 if (!NSK_JVMTI_VERIFY(jvmti->SetFieldAccessWatch(cls, field_accID)))
478 return;
479
480 if (!nsk_jvmti_resumeSync())
481 return;
482
483 for (i = 1; i <= STEP_NUMBER; i++) {
484
485 if (!nsk_jvmti_waitForSync(timeout))
486 return;
487
488 if (i < STEP_NUMBER) {
489 showEventStatistics(i);
490 if (!checkEvents(i))
491 nsk_jvmti_setFailStatus();
505
506 /** Agent library initialization. */
507 #ifdef STATIC_BUILD
508 JNIEXPORT jint JNICALL Agent_OnLoad_em02t010(JavaVM *jvm, char *options, void *reserved) {
509 return Agent_Initialize(jvm, options, reserved);
510 }
511 JNIEXPORT jint JNICALL Agent_OnAttach_em02t010(JavaVM *jvm, char *options, void *reserved) {
512 return Agent_Initialize(jvm, options, reserved);
513 }
514 JNIEXPORT jint JNI_OnLoad_em02t010(JavaVM *jvm, char *options, void *reserved) {
515 return JNI_VERSION_1_8;
516 }
517 #endif
518 jint Agent_Initialize(JavaVM *jvm, char *options, void *reserved) {
519
520 if (!NSK_VERIFY(nsk_jvmti_parseOptions(options)))
521 return JNI_ERR;
522
523 timeout = nsk_jvmti_getWaitTime() * 60 * 1000;
524
525 jvmti = nsk_jvmti_createJVMTIEnv(jvm, reserved);
526 if (!NSK_VERIFY(jvmti != NULL))
527 return JNI_ERR;
528
529 if (!NSK_JVMTI_VERIFY(jvmti->CreateRawMonitor("_syncLock", &syncLock))) {
530 nsk_jvmti_setFailStatus();
531 return JNI_ERR;
532 }
533
534 {
535 jvmtiCapabilities caps;
536 memset(&caps, 0, sizeof(caps));
537
538 caps.can_generate_field_modification_events = 1;
539 caps.can_generate_field_access_events = 1;
540 if (!NSK_JVMTI_VERIFY(jvmti->AddCapabilities(&caps)))
541 return JNI_ERR;
542 }
543
544 if (!setCallBacks(1)) {
545 return JNI_ERR;
546 }
|