< prev index next >

test/hotspot/jtreg/vmTestbase/nsk/jvmti/DisposeEnvironment/disposeenv002/disposeenv002.cpp

Print this page
rev 51942 : [mq]: refactor


  28 #include "jni_tools.h"
  29 #include "jvmti_tools.h"
  30 
  31 extern "C" {
  32 
  33 /* ============================================================================= */
  34 
  35 #define STATUS_FAIL     97
  36 
  37 /* ============================================================================= */
  38 
  39 /**
  40  * Callback for VM_DEATH event.
  41  */
  42 JNIEXPORT void JNICALL
  43 callbackVMDeath(jvmtiEnv* jvmti, JNIEnv* jni) {
  44     int success = NSK_TRUE;
  45 
  46     NSK_DISPLAY0("Disable VM_DEATH event in VM_DEATH callback\n");
  47     if (!NSK_JVMTI_VERIFY(
  48             NSK_CPP_STUB4(SetEventNotificationMode, jvmti, JVMTI_DISABLE,
  49                                 JVMTI_EVENT_VM_DEATH, NULL))) {
  50         success = NSK_FALSE;
  51     } else {
  52         NSK_DISPLAY0("  ... disabled\n");
  53     }
  54 
  55     NSK_DISPLAY0(">>> Testcase #1: Dispose JVMTI environment in VM_DEATH callback\n");
  56     if (!NSK_JVMTI_VERIFY(
  57             NSK_CPP_STUB1(DisposeEnvironment, jvmti))) {
  58         success = NSK_FALSE;
  59     } else {
  60         NSK_DISPLAY0("  ... disposed\n");
  61     }
  62 
  63     if (!success) {
  64         NSK_DISPLAY1("Exit with FAIL exit status: %d\n", STATUS_FAIL);
  65         NSK_BEFORE_TRACE(exit(STATUS_FAIL));
  66     }
  67 }
  68 
  69 /* ============================================================================= */
  70 
  71 /** Agent library initialization. */
  72 #ifdef STATIC_BUILD
  73 JNIEXPORT jint JNICALL Agent_OnLoad_disposeenv002(JavaVM *jvm, char *options, void *reserved) {
  74     return Agent_Initialize(jvm, options, reserved);
  75 }
  76 JNIEXPORT jint JNICALL Agent_OnAttach_disposeenv002(JavaVM *jvm, char *options, void *reserved) {
  77     return Agent_Initialize(jvm, options, reserved);
  78 }
  79 JNIEXPORT jint JNI_OnLoad_disposeenv002(JavaVM *jvm, char *options, void *reserved) {
  80     return JNI_VERSION_1_8;
  81 }
  82 #endif
  83 jint Agent_Initialize(JavaVM *jvm, char *options, void *reserved) {
  84     jvmtiEnv* jvmti = NULL;
  85 
  86     if (!NSK_VERIFY(nsk_jvmti_parseOptions(options)))
  87         return JNI_ERR;
  88 
  89     if (!NSK_VERIFY((jvmti =
  90             nsk_jvmti_createJVMTIEnv(jvm, reserved)) != NULL))
  91         return JNI_ERR;
  92 
  93     {
  94         jvmtiEventCallbacks eventCallbacks;
  95 
  96         memset(&eventCallbacks, 0, sizeof(eventCallbacks));
  97         eventCallbacks.VMDeath = callbackVMDeath;
  98         if (!NSK_JVMTI_VERIFY(
  99                 NSK_CPP_STUB3(SetEventCallbacks, jvmti,
 100                                     &eventCallbacks, sizeof(eventCallbacks)))) {
 101             return JNI_ERR;
 102         }
 103 
 104         NSK_DISPLAY0("Enable VM_DEATH event in JVM_OnLoad()\n");
 105         if (!NSK_JVMTI_VERIFY(
 106                 NSK_CPP_STUB4(SetEventNotificationMode, jvmti, JVMTI_ENABLE,
 107                                     JVMTI_EVENT_VM_DEATH, NULL))) {
 108             return JNI_ERR;
 109         }
 110         NSK_DISPLAY0("  ... enabled\n");
 111     }
 112 
 113     return JNI_OK;
 114 }
 115 
 116 /* ============================================================================= */
 117 
 118 }


  28 #include "jni_tools.h"
  29 #include "jvmti_tools.h"
  30 
  31 extern "C" {
  32 
  33 /* ============================================================================= */
  34 
  35 #define STATUS_FAIL     97
  36 
  37 /* ============================================================================= */
  38 
  39 /**
  40  * Callback for VM_DEATH event.
  41  */
  42 JNIEXPORT void JNICALL
  43 callbackVMDeath(jvmtiEnv* jvmti, JNIEnv* jni) {
  44     int success = NSK_TRUE;
  45 
  46     NSK_DISPLAY0("Disable VM_DEATH event in VM_DEATH callback\n");
  47     if (!NSK_JVMTI_VERIFY(
  48             jvmti->SetEventNotificationMode(JVMTI_DISABLE, JVMTI_EVENT_VM_DEATH, NULL))) {

  49         success = NSK_FALSE;
  50     } else {
  51         NSK_DISPLAY0("  ... disabled\n");
  52     }
  53 
  54     NSK_DISPLAY0(">>> Testcase #1: Dispose JVMTI environment in VM_DEATH callback\n");
  55     if (!NSK_JVMTI_VERIFY(jvmti->DisposeEnvironment())) {

  56         success = NSK_FALSE;
  57     } else {
  58         NSK_DISPLAY0("  ... disposed\n");
  59     }
  60 
  61     if (!success) {
  62         NSK_DISPLAY1("Exit with FAIL exit status: %d\n", STATUS_FAIL);
  63         NSK_BEFORE_TRACE(exit(STATUS_FAIL));
  64     }
  65 }
  66 
  67 /* ============================================================================= */
  68 
  69 /** Agent library initialization. */
  70 #ifdef STATIC_BUILD
  71 JNIEXPORT jint JNICALL Agent_OnLoad_disposeenv002(JavaVM *jvm, char *options, void *reserved) {
  72     return Agent_Initialize(jvm, options, reserved);
  73 }
  74 JNIEXPORT jint JNICALL Agent_OnAttach_disposeenv002(JavaVM *jvm, char *options, void *reserved) {
  75     return Agent_Initialize(jvm, options, reserved);
  76 }
  77 JNIEXPORT jint JNI_OnLoad_disposeenv002(JavaVM *jvm, char *options, void *reserved) {
  78     return JNI_VERSION_1_8;
  79 }
  80 #endif
  81 jint Agent_Initialize(JavaVM *jvm, char *options, void *reserved) {
  82     jvmtiEnv* jvmti = NULL;
  83 
  84     if (!NSK_VERIFY(nsk_jvmti_parseOptions(options)))
  85         return JNI_ERR;
  86 
  87     if (!NSK_VERIFY((jvmti =
  88             nsk_jvmti_createJVMTIEnv(jvm, reserved)) != NULL))
  89         return JNI_ERR;
  90 
  91     {
  92         jvmtiEventCallbacks eventCallbacks;
  93 
  94         memset(&eventCallbacks, 0, sizeof(eventCallbacks));
  95         eventCallbacks.VMDeath = callbackVMDeath;
  96         if (!NSK_JVMTI_VERIFY(jvmti->SetEventCallbacks(&eventCallbacks, sizeof(eventCallbacks)))) {


  97             return JNI_ERR;
  98         }
  99 
 100         NSK_DISPLAY0("Enable VM_DEATH event in JVM_OnLoad()\n");
 101         if (!NSK_JVMTI_VERIFY(
 102                 jvmti->SetEventNotificationMode(JVMTI_ENABLE, JVMTI_EVENT_VM_DEATH, NULL))) {

 103             return JNI_ERR;
 104         }
 105         NSK_DISPLAY0("  ... enabled\n");
 106     }
 107 
 108     return JNI_OK;
 109 }
 110 
 111 /* ============================================================================= */
 112 
 113 }
< prev index next >