< prev index next >

test/hotspot/jtreg/vmTestbase/nsk/jvmti/unit/functions/rawmonitor/rawmonitor.cpp

Print this page
rev 51722 : 8210700: Clean up JNI_ENV_ARG and factorize the macros for vmTestbase/jvmti/unit tests
Summary:
Reviewed-by:

*** 46,76 **** #include <stdio.h> #include <string.h> #include "jvmti.h" #include "agent_common.h" - #ifdef __cplusplus extern "C" { - #endif - - #ifndef JNI_ENV_ARG - #ifdef __cplusplus - #define JNI_ENV_ARG(x, y) y - #define JNI_ENV_ARG1(x) - #define JNI_ENV_PTR(x) x - #else - #define JNI_ENV_ARG(x,y) x, y - #define JNI_ENV_ARG1(x) x - #define JNI_ENV_PTR(x) (*x) - #endif - - #endif - - #define JVMTI_ENV_ARG JNI_ENV_ARG - #define JVMTI_ENV_ARG1 JNI_ENV_ARG1 - #define JVMTI_ENV_PTR JNI_ENV_PTR #define JVMTI_ERROR_CHECK(str,res) if ( res != JVMTI_ERROR_NONE) { printf(str); printf(" %d\n",res); return res;} #define JVMTI_ERROR_CHECK_EXPECTED_ERROR(str,res,err) if ( res != err) { printf(str); printf(" unexpected error %d\n",res); return res;} #define JVMTI_ERROR_CHECK_VOID(str,res) if ( res != JVMTI_ERROR_NONE) { printf(str); printf(" %d\n",res); iGlobalStatus = 2; } --- 46,57 ----
*** 106,128 **** } void JNICALL vmStart(jvmtiEnv *jvmti_env, JNIEnv *env) { jvmtiError res; ! res = JVMTI_ENV_PTR(jvmti)->GetCurrentThread(JVMTI_ENV_ARG(jvmti_env, &main_thread)); JVMTI_ERROR_CHECK_VOID(" JVMTI GetCurrentThread returned error", res); ! main_thread = (jthread)JNI_ENV_PTR(env)->NewGlobalRef(JNI_ENV_ARG(env, main_thread)); } void JNICALL vmInit(jvmtiEnv *jvmti_env, JNIEnv *env, jthread thread) { jvmtiError res; debug_printf("VMInit event done\n"); ! res = JVMTI_ENV_PTR(jvmti)->RawMonitorExit(JVMTI_ENV_ARG(jvmti_env, access_lock)); JVMTI_ERROR_CHECK_VOID(" Raw monitor exit returned error", res); ! res = JVMTI_ENV_PTR(jvmti)->RawMonitorExit(JVMTI_ENV_ARG(jvmti_env, access_lock)); JVMTI_ERROR_CHECK_VOID(" Raw monitor exit returned error", res); } void JNICALL vmExit(jvmtiEnv *jvmti_env, JNIEnv *env) { debug_printf("------------ JVMTI_EVENT_VM_DEATH ------------\n"); --- 87,109 ---- } void JNICALL vmStart(jvmtiEnv *jvmti_env, JNIEnv *env) { jvmtiError res; ! res = jvmti->GetCurrentThread(&main_thread); JVMTI_ERROR_CHECK_VOID(" JVMTI GetCurrentThread returned error", res); ! main_thread = (jthread)env->NewGlobalRef(main_thread); } void JNICALL vmInit(jvmtiEnv *jvmti_env, JNIEnv *env, jthread thread) { jvmtiError res; debug_printf("VMInit event done\n"); ! res = jvmti->RawMonitorExit(access_lock); JVMTI_ERROR_CHECK_VOID(" Raw monitor exit returned error", res); ! res = jvmti->RawMonitorExit(access_lock); JVMTI_ERROR_CHECK_VOID(" Raw monitor exit returned error", res); } void JNICALL vmExit(jvmtiEnv *jvmti_env, JNIEnv *env) { debug_printf("------------ JVMTI_EVENT_VM_DEATH ------------\n");
*** 138,158 **** unsigned char** new_class_data) { jvmtiError res; jvmtiPhase phase; jthread thread; - jboolean is_main; ! res = JVMTI_ENV_PTR(jvmti)->GetPhase(JVMTI_ENV_ARG(jvmti_env, &phase)); JVMTI_ERROR_CHECK_VOID(" JVMTI GetPhase returned error", res); if (phase != JVMTI_PHASE_START) { return; /* only the start phase is tested */ } ! res = JVMTI_ENV_PTR(jvmti)->GetCurrentThread(JVMTI_ENV_ARG(jvmti_env, &thread)); JVMTI_ERROR_CHECK_VOID(" JVMTI GetCurrentThread returned error", res); ! is_main = JNI_ENV_PTR(env)->IsSameObject(JNI_ENV_ARG(env, thread), main_thread); ! if (is_main == JNI_FALSE) { return; /* only the main thread is tested */ } debug_printf("------------ classFileLoadHookEvent ------------\n"); --- 119,137 ---- unsigned char** new_class_data) { jvmtiError res; jvmtiPhase phase; jthread thread; ! res = jvmti->GetPhase(&phase); JVMTI_ERROR_CHECK_VOID(" JVMTI GetPhase returned error", res); if (phase != JVMTI_PHASE_START) { return; /* only the start phase is tested */ } ! res = jvmti->GetCurrentThread(&thread); JVMTI_ERROR_CHECK_VOID(" JVMTI GetCurrentThread returned error", res); ! if (!env->IsSameObject(thread, main_thread)) { return; /* only the main thread is tested */ } debug_printf("------------ classFileLoadHookEvent ------------\n");
*** 161,185 **** if (process_once) { process_once = 0; /* test not entered raw monitor */ ! res = JVMTI_ENV_PTR(jvmti)->RawMonitorExit(JVMTI_ENV_ARG(jvmti_env, access_lock_not_entered)); JVMTI_ERROR_CHECK_EXPECTED_ERROR_VOID("Raw monitor exit returned error", res,JVMTI_ERROR_NOT_MONITOR_OWNER); /* release lock in start phase */ ! res = JVMTI_ENV_PTR(jvmti)->RawMonitorExit(JVMTI_ENV_ARG(jvmti_env, access_lock)); JVMTI_ERROR_CHECK_VOID("Raw monitor exit returned error", res); /* release lock in start phase */ ! res = JVMTI_ENV_PTR(jvmti)->RawMonitorExit(JVMTI_ENV_ARG(jvmti_env, access_lock)); JVMTI_ERROR_CHECK_VOID("Raw monitor exit returned error", res); ! res = JVMTI_ENV_PTR(jvmti)->RawMonitorEnter(JVMTI_ENV_ARG(jvmti, access_lock)); JVMTI_ERROR_CHECK_VOID("Raw monitor enter returned error", res); ! res = JVMTI_ENV_PTR(jvmti)->RawMonitorEnter(JVMTI_ENV_ARG(jvmti, access_lock)); JVMTI_ERROR_CHECK_VOID("Raw monitor enter returned error", res); } } --- 140,164 ---- if (process_once) { process_once = 0; /* test not entered raw monitor */ ! res = jvmti->RawMonitorExit(access_lock_not_entered); JVMTI_ERROR_CHECK_EXPECTED_ERROR_VOID("Raw monitor exit returned error", res,JVMTI_ERROR_NOT_MONITOR_OWNER); /* release lock in start phase */ ! res = jvmti->RawMonitorExit(access_lock); JVMTI_ERROR_CHECK_VOID("Raw monitor exit returned error", res); /* release lock in start phase */ ! res = jvmti->RawMonitorExit(access_lock); JVMTI_ERROR_CHECK_VOID("Raw monitor exit returned error", res); ! res = jvmti->RawMonitorEnter(access_lock); JVMTI_ERROR_CHECK_VOID("Raw monitor enter returned error", res); ! res = jvmti->RawMonitorEnter(access_lock); JVMTI_ERROR_CHECK_VOID("Raw monitor enter returned error", res); } }
*** 212,303 **** if (strstr(options, "printdump")) { printdump = 1; } } ! res = JNI_ENV_PTR(jvm)-> ! GetEnv(JNI_ENV_ARG(jvm, (void **) &jvmti), JVMTI_VERSION_1_1); if (res < 0) { debug_printf("Wrong result of a valid call to GetEnv!\n"); return JNI_ERR; } /* Onload phase Create data access lock */ ! res = JVMTI_ENV_PTR(jvmti)->CreateRawMonitor(JVMTI_ENV_ARG(jvmti,"_access_lock"),&access_lock); JVMTI_ERROR_CHECK("CreateRawMonitor failed with error code ", res); ! res = JVMTI_ENV_PTR(jvmti)->CreateRawMonitor(JVMTI_ENV_ARG(jvmti,"_access_lock_not_entered"),&access_lock_not_entered); JVMTI_ERROR_CHECK("CreateRawMonitor failed with error code ", res); /* Create this raw monitor in onload and it is used in live phase */ ! res = JVMTI_ENV_PTR(jvmti)->CreateRawMonitor(JVMTI_ENV_ARG(jvmti,"RawMonitor-0"),&jraw_monitor[0]); JVMTI_ERROR_CHECK("CreateRawMonitor failed with error code ", res); /* Add capabilities */ ! res = JVMTI_ENV_PTR(jvmti)->GetPotentialCapabilities(JVMTI_ENV_ARG(jvmti, &jvmti_caps)); JVMTI_ERROR_CHECK("GetPotentialCapabilities returned error", res); ! res = JVMTI_ENV_PTR(jvmti)->AddCapabilities(JVMTI_ENV_ARG(jvmti, &jvmti_caps)); JVMTI_ERROR_CHECK("GetPotentialCapabilities returned error", res); /* Enable events */ init_callbacks(); ! res = JVMTI_ENV_PTR(jvmti)->SetEventCallbacks(JVMTI_ENV_ARG(jvmti, &callbacks), sizeof(callbacks)); JVMTI_ERROR_CHECK("SetEventCallbacks returned error", res); ! res = JVMTI_ENV_PTR(jvmti)->SetEventNotificationMode(JVMTI_ENV_ARG(jvmti,JVMTI_ENABLE),JVMTI_EVENT_VM_INIT,NULL); JVMTI_ERROR_CHECK("SetEventNotificationMode for VM_INIT returned error", res); ! res = JVMTI_ENV_PTR(jvmti)->SetEventNotificationMode(JVMTI_ENV_ARG(jvmti,JVMTI_ENABLE),JVMTI_EVENT_VM_DEATH,NULL); JVMTI_ERROR_CHECK("SetEventNotificationMode for vm death event returned error", res); ! res = JVMTI_ENV_PTR(jvmti)->SetEventNotificationMode(JVMTI_ENV_ARG(jvmti,JVMTI_ENABLE),JVMTI_EVENT_CLASS_FILE_LOAD_HOOK,NULL); JVMTI_ERROR_CHECK("SetEventNotificationMode CLASS_FILE_LOAD_HOOK returned error", res); /* acquire lock in onload */ ! res = JVMTI_ENV_PTR(jvmti)->RawMonitorEnter(JVMTI_ENV_ARG(jvmti, access_lock)); JVMTI_ERROR_CHECK("Raw monitor enter returned error", res); /* release lock in onload */ ! res = JVMTI_ENV_PTR(jvmti)->RawMonitorExit(JVMTI_ENV_ARG(jvmti, access_lock)); JVMTI_ERROR_CHECK("Raw monitor exit returned error", res); /* test not entered raw monitor */ ! res = JVMTI_ENV_PTR(jvmti)->RawMonitorExit(JVMTI_ENV_ARG(jvmti ,access_lock_not_entered)); JVMTI_ERROR_CHECK_EXPECTED_ERROR("Raw monitor exit returned error", res,JVMTI_ERROR_NOT_MONITOR_OWNER); /* acquire lock in onload */ ! res = JVMTI_ENV_PTR(jvmti)->RawMonitorEnter(JVMTI_ENV_ARG(jvmti, access_lock)); JVMTI_ERROR_CHECK("Raw monitor enter returned error", res); ! res = JVMTI_ENV_PTR(jvmti)->RawMonitorEnter(JVMTI_ENV_ARG(jvmti, access_lock)); JVMTI_ERROR_CHECK("Raw monitor enter returned error", res); ! res = JVMTI_ENV_PTR(jvmti)->RawMonitorEnter(JVMTI_ENV_ARG(jvmti, access_lock)); JVMTI_ERROR_CHECK("Raw monitor enter returned error", res); /* test Destroy raw monitor in onload phase */ ! res = JVMTI_ENV_PTR(jvmti)->DestroyRawMonitor(JVMTI_ENV_ARG(jvmti, access_lock)); JVMTI_ERROR_CHECK("Destroy Raw monitor returned error", res); /* Create data access lock in onload and enter in onload phase */ ! res = JVMTI_ENV_PTR(jvmti)->CreateRawMonitor(JVMTI_ENV_ARG(jvmti,"_access_lock"),&access_lock); JVMTI_ERROR_CHECK("CreateRawMonitor failed with error code ", res); ! res = JVMTI_ENV_PTR(jvmti)->RawMonitorEnter(JVMTI_ENV_ARG(jvmti, access_lock)); JVMTI_ERROR_CHECK("Raw monitor enter returned error", res); ! res = JVMTI_ENV_PTR(jvmti)->RawMonitorEnter(JVMTI_ENV_ARG(jvmti, access_lock)); JVMTI_ERROR_CHECK("Raw monitor enter returned error", res); /* This monitor is entered here and it is released in live phase by a call from java code */ ! res = JVMTI_ENV_PTR(jvmti)->RawMonitorEnter(JVMTI_ENV_ARG(jvmti, jraw_monitor[0])); JVMTI_ERROR_CHECK("Raw monitor enter returned error", res); ! res = JVMTI_ENV_PTR(jvmti)->RawMonitorEnter(JVMTI_ENV_ARG(jvmti, jraw_monitor[0])); JVMTI_ERROR_CHECK("Raw monitor enter returned error", res); ! res = JVMTI_ENV_PTR(jvmti)->RawMonitorExit(JVMTI_ENV_ARG(jvmti, jraw_monitor[0])); JVMTI_ERROR_CHECK("Raw monitor exit returned error", res); return JNI_OK; } --- 191,281 ---- if (strstr(options, "printdump")) { printdump = 1; } } ! res = jvm->GetEnv((void **) &jvmti, JVMTI_VERSION_1_1); if (res < 0) { debug_printf("Wrong result of a valid call to GetEnv!\n"); return JNI_ERR; } /* Onload phase Create data access lock */ ! res = jvmti->CreateRawMonitor("_access_lock", &access_lock); JVMTI_ERROR_CHECK("CreateRawMonitor failed with error code ", res); ! res = jvmti->CreateRawMonitor("_access_lock_not_entered", &access_lock_not_entered); JVMTI_ERROR_CHECK("CreateRawMonitor failed with error code ", res); /* Create this raw monitor in onload and it is used in live phase */ ! res = jvmti->CreateRawMonitor("RawMonitor-0", &jraw_monitor[0]); JVMTI_ERROR_CHECK("CreateRawMonitor failed with error code ", res); /* Add capabilities */ ! res = jvmti->GetPotentialCapabilities(&jvmti_caps); JVMTI_ERROR_CHECK("GetPotentialCapabilities returned error", res); ! res = jvmti->AddCapabilities(&jvmti_caps); JVMTI_ERROR_CHECK("GetPotentialCapabilities returned error", res); /* Enable events */ init_callbacks(); ! res = jvmti->SetEventCallbacks(&callbacks, sizeof(callbacks)); JVMTI_ERROR_CHECK("SetEventCallbacks returned error", res); ! res = jvmti->SetEventNotificationMode(JVMTI_ENABLE, JVMTI_EVENT_VM_INIT, NULL); JVMTI_ERROR_CHECK("SetEventNotificationMode for VM_INIT returned error", res); ! res = jvmti->SetEventNotificationMode(JVMTI_ENABLE, JVMTI_EVENT_VM_DEATH, NULL); JVMTI_ERROR_CHECK("SetEventNotificationMode for vm death event returned error", res); ! res = jvmti->SetEventNotificationMode(JVMTI_ENABLE, JVMTI_EVENT_CLASS_FILE_LOAD_HOOK, NULL); JVMTI_ERROR_CHECK("SetEventNotificationMode CLASS_FILE_LOAD_HOOK returned error", res); /* acquire lock in onload */ ! res = jvmti->RawMonitorEnter(access_lock); JVMTI_ERROR_CHECK("Raw monitor enter returned error", res); /* release lock in onload */ ! res = jvmti->RawMonitorExit(access_lock); JVMTI_ERROR_CHECK("Raw monitor exit returned error", res); /* test not entered raw monitor */ ! res = jvmti->RawMonitorExit(access_lock_not_entered); JVMTI_ERROR_CHECK_EXPECTED_ERROR("Raw monitor exit returned error", res,JVMTI_ERROR_NOT_MONITOR_OWNER); /* acquire lock in onload */ ! res = jvmti->RawMonitorEnter(access_lock); JVMTI_ERROR_CHECK("Raw monitor enter returned error", res); ! res = jvmti->RawMonitorEnter(access_lock); JVMTI_ERROR_CHECK("Raw monitor enter returned error", res); ! res = jvmti->RawMonitorEnter(access_lock); JVMTI_ERROR_CHECK("Raw monitor enter returned error", res); /* test Destroy raw monitor in onload phase */ ! res = jvmti->DestroyRawMonitor(access_lock); JVMTI_ERROR_CHECK("Destroy Raw monitor returned error", res); /* Create data access lock in onload and enter in onload phase */ ! res = jvmti->CreateRawMonitor("_access_lock", &access_lock); JVMTI_ERROR_CHECK("CreateRawMonitor failed with error code ", res); ! res = jvmti->RawMonitorEnter(access_lock); JVMTI_ERROR_CHECK("Raw monitor enter returned error", res); ! res = jvmti->RawMonitorEnter(access_lock); JVMTI_ERROR_CHECK("Raw monitor enter returned error", res); /* This monitor is entered here and it is released in live phase by a call from java code */ ! res = jvmti->RawMonitorEnter(jraw_monitor[0]); JVMTI_ERROR_CHECK("Raw monitor enter returned error", res); ! res = jvmti->RawMonitorEnter(jraw_monitor[0]); JVMTI_ERROR_CHECK("Raw monitor enter returned error", res); ! res = jvmti->RawMonitorExit(jraw_monitor[0]); JVMTI_ERROR_CHECK("Raw monitor exit returned error", res); return JNI_OK; }
*** 313,323 **** jvmtiError ret; char sz[128]; sprintf(sz, "Rawmonitor-%d",i); debug_printf("jvmti create raw monitor \n"); ! ret = JVMTI_ENV_PTR(jvmti)->CreateRawMonitor(JVMTI_ENV_ARG(jvmti, sz), &jraw_monitor[i]); if (ret != JVMTI_ERROR_NONE) { printf("Error: CreateRawMonitor %d \n", ret); iGlobalStatus = 2; } --- 291,301 ---- jvmtiError ret; char sz[128]; sprintf(sz, "Rawmonitor-%d",i); debug_printf("jvmti create raw monitor \n"); ! ret = jvmti->CreateRawMonitor(sz, &jraw_monitor[i]); if (ret != JVMTI_ERROR_NONE) { printf("Error: CreateRawMonitor %d \n", ret); iGlobalStatus = 2; }
*** 326,336 **** JNIEXPORT void JNICALL Java_nsk_jvmti_unit_functions_rawmonitor_RawMonitorEnter(JNIEnv * env, jclass cls, jint i) { jvmtiError ret; debug_printf("jvmti Raw monitor enter \n"); ! ret = JVMTI_ENV_PTR(jvmti)->RawMonitorEnter(JVMTI_ENV_ARG(jvmti, jraw_monitor[i])); if (ret != JVMTI_ERROR_NONE) { printf("Error: RawMonitorEnter %d \n", ret); iGlobalStatus = 2; } --- 304,314 ---- JNIEXPORT void JNICALL Java_nsk_jvmti_unit_functions_rawmonitor_RawMonitorEnter(JNIEnv * env, jclass cls, jint i) { jvmtiError ret; debug_printf("jvmti Raw monitor enter \n"); ! ret = jvmti->RawMonitorEnter(jraw_monitor[i]); if (ret != JVMTI_ERROR_NONE) { printf("Error: RawMonitorEnter %d \n", ret); iGlobalStatus = 2; }
*** 339,349 **** JNIEXPORT void JNICALL Java_nsk_jvmti_unit_functions_rawmonitor_RawMonitorExit(JNIEnv * env, jclass cls, jint i) { jvmtiError ret; debug_printf("jvmti raw monitor exit \n"); ! ret = JVMTI_ENV_PTR(jvmti)->RawMonitorExit(JVMTI_ENV_ARG(jvmti, jraw_monitor[i])); if (ret != JVMTI_ERROR_NONE) { printf("Error: RawMonitorExit %d \n", ret); iGlobalStatus = 2; } --- 317,327 ---- JNIEXPORT void JNICALL Java_nsk_jvmti_unit_functions_rawmonitor_RawMonitorExit(JNIEnv * env, jclass cls, jint i) { jvmtiError ret; debug_printf("jvmti raw monitor exit \n"); ! ret = jvmti->RawMonitorExit(jraw_monitor[i]); if (ret != JVMTI_ERROR_NONE) { printf("Error: RawMonitorExit %d \n", ret); iGlobalStatus = 2; }
*** 352,367 **** JNIEXPORT void JNICALL Java_nsk_jvmti_unit_functions_rawmonitor_RawMonitorWait(JNIEnv * env, jclass cls, jint i) { jvmtiError ret; debug_printf("jvmti RawMonitorWait \n"); ! ret = JVMTI_ENV_PTR(jvmti)->RawMonitorWait(JVMTI_ENV_ARG(jvmti, jraw_monitor[i]), -1); if (ret != JVMTI_ERROR_NONE) { printf("Error: RawMonitorWait %d \n", ret); iGlobalStatus = 2; } } - #ifdef __cplusplus } - #endif --- 330,343 ---- JNIEXPORT void JNICALL Java_nsk_jvmti_unit_functions_rawmonitor_RawMonitorWait(JNIEnv * env, jclass cls, jint i) { jvmtiError ret; debug_printf("jvmti RawMonitorWait \n"); ! ret = jvmti->RawMonitorWait(jraw_monitor[i], -1); if (ret != JVMTI_ERROR_NONE) { printf("Error: RawMonitorWait %d \n", ret); iGlobalStatus = 2; } } }
< prev index next >