427 if (!NSK_JVMTI_VERIFY(jvmti->SetEventCallbacks(&eventCallbacks, sizeof(eventCallbacks))))
428 return NSK_FALSE;
429
430 return NSK_TRUE;
431 }
432
433 /* ============================================================================= */
434
435 /** Agent algorithm. */
436 static void JNICALL
437 agentProc(jvmtiEnv* jvmti, JNIEnv* agentJNI, void* arg) {
438
439 int i;
440 jmethodID methodID;
441 jclass cls;
442
443
444 if (!nsk_jvmti_waitForSync(timeout))
445 return;
446
447 if (!NSK_JNI_VERIFY(agentJNI, (cls = agentJNI->FindClass(CLASS_NAME)) != NULL))
448 return;
449
450 if (!NSK_JNI_VERIFY(agentJNI, (methodID =
451 agentJNI->GetStaticMethodID(cls, METHOD_NAME, "()I")) != NULL))
452 return;
453
454 if (!NSK_JVMTI_VERIFY(jvmti->SetBreakpoint(methodID, 0)))
455 return;
456
457 if (!nsk_jvmti_resumeSync())
458 return;
459
460 for (i = 1; i <= STEP_NUMBER; i++) {
461
462 if (!nsk_jvmti_waitForSync(timeout))
463 return;
464
465 if (i < STEP_NUMBER) {
466 showEventStatistics(i);
467 if (!checkEvents(i))
468 nsk_jvmti_setFailStatus();
469
470 if (!setCallBacks(i + 1)) {
471 return;
482
483 /** Agent library initialization. */
484 #ifdef STATIC_BUILD
485 JNIEXPORT jint JNICALL Agent_OnLoad_em02t011(JavaVM *jvm, char *options, void *reserved) {
486 return Agent_Initialize(jvm, options, reserved);
487 }
488 JNIEXPORT jint JNICALL Agent_OnAttach_em02t011(JavaVM *jvm, char *options, void *reserved) {
489 return Agent_Initialize(jvm, options, reserved);
490 }
491 JNIEXPORT jint JNI_OnLoad_em02t011(JavaVM *jvm, char *options, void *reserved) {
492 return JNI_VERSION_1_8;
493 }
494 #endif
495 jint Agent_Initialize(JavaVM *jvm, char *options, void *reserved) {
496
497 if (!NSK_VERIFY(nsk_jvmti_parseOptions(options)))
498 return JNI_ERR;
499
500 timeout = nsk_jvmti_getWaitTime() * 60 * 1000;
501
502 if (!NSK_VERIFY((jvmti = nsk_jvmti_createJVMTIEnv(jvm, reserved)) != NULL))
503 return JNI_ERR;
504
505 if (!NSK_JVMTI_VERIFY(jvmti->CreateRawMonitor("_syncLock", &syncLock))) {
506 nsk_jvmti_setFailStatus();
507 return JNI_ERR;
508 }
509
510 {
511 jvmtiCapabilities caps;
512 memset(&caps, 0, sizeof(caps));
513
514 caps.can_generate_breakpoint_events = 1;
515 if (!NSK_JVMTI_VERIFY(jvmti->AddCapabilities(&caps)))
516 return JNI_ERR;
517 }
518
519 if (!setCallBacks(1)) {
520 return JNI_ERR;
521 }
522
|
427 if (!NSK_JVMTI_VERIFY(jvmti->SetEventCallbacks(&eventCallbacks, sizeof(eventCallbacks))))
428 return NSK_FALSE;
429
430 return NSK_TRUE;
431 }
432
433 /* ============================================================================= */
434
435 /** Agent algorithm. */
436 static void JNICALL
437 agentProc(jvmtiEnv* jvmti, JNIEnv* agentJNI, void* arg) {
438
439 int i;
440 jmethodID methodID;
441 jclass cls;
442
443
444 if (!nsk_jvmti_waitForSync(timeout))
445 return;
446
447 cls = agentJNI->FindClass(CLASS_NAME);
448 if (!NSK_JNI_VERIFY(agentJNI, cls != NULL))
449 return;
450
451 methodID = agentJNI->GetStaticMethodID(cls, METHOD_NAME, "()I");
452 if (!NSK_JNI_VERIFY(agentJNI, methodID != NULL))
453 return;
454
455 if (!NSK_JVMTI_VERIFY(jvmti->SetBreakpoint(methodID, 0)))
456 return;
457
458 if (!nsk_jvmti_resumeSync())
459 return;
460
461 for (i = 1; i <= STEP_NUMBER; i++) {
462
463 if (!nsk_jvmti_waitForSync(timeout))
464 return;
465
466 if (i < STEP_NUMBER) {
467 showEventStatistics(i);
468 if (!checkEvents(i))
469 nsk_jvmti_setFailStatus();
470
471 if (!setCallBacks(i + 1)) {
472 return;
483
484 /** Agent library initialization. */
485 #ifdef STATIC_BUILD
486 JNIEXPORT jint JNICALL Agent_OnLoad_em02t011(JavaVM *jvm, char *options, void *reserved) {
487 return Agent_Initialize(jvm, options, reserved);
488 }
489 JNIEXPORT jint JNICALL Agent_OnAttach_em02t011(JavaVM *jvm, char *options, void *reserved) {
490 return Agent_Initialize(jvm, options, reserved);
491 }
492 JNIEXPORT jint JNI_OnLoad_em02t011(JavaVM *jvm, char *options, void *reserved) {
493 return JNI_VERSION_1_8;
494 }
495 #endif
496 jint Agent_Initialize(JavaVM *jvm, char *options, void *reserved) {
497
498 if (!NSK_VERIFY(nsk_jvmti_parseOptions(options)))
499 return JNI_ERR;
500
501 timeout = nsk_jvmti_getWaitTime() * 60 * 1000;
502
503 jvmti = nsk_jvmti_createJVMTIEnv(jvm, reserved);
504 if (!NSK_VERIFY(jvmti != NULL))
505 return JNI_ERR;
506
507 if (!NSK_JVMTI_VERIFY(jvmti->CreateRawMonitor("_syncLock", &syncLock))) {
508 nsk_jvmti_setFailStatus();
509 return JNI_ERR;
510 }
511
512 {
513 jvmtiCapabilities caps;
514 memset(&caps, 0, sizeof(caps));
515
516 caps.can_generate_breakpoint_events = 1;
517 if (!NSK_JVMTI_VERIFY(jvmti->AddCapabilities(&caps)))
518 return JNI_ERR;
519 }
520
521 if (!setCallBacks(1)) {
522 return JNI_ERR;
523 }
524
|