< 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 >