< prev index next >
test/hotspot/jtreg/vmTestbase/nsk/jvmti/scenarios/bcinstr/BI01/bi01t001/bi01t001.cpp
Print this page
rev 52432 : 8213501: Deploy ExceptionJniWrapper for a few tests
Summary:
Reviewed-by:
*** 22,31 ****
--- 22,32 ----
*/
#include <string.h>
#include "jvmti.h"
#include "agent_common.h"
+ #include "ExceptionCheckingJniEnv.hpp"
#include "jni_tools.h"
#include "jvmti_tools.h"
extern "C" {
*** 44,68 ****
* Class: nsk_jvmti_scenarios_bcinstr_BI01_bi01t001
* Method: setNewByteCode
* Signature: ([B)Z
*/
JNIEXPORT jboolean JNICALL
! Java_nsk_jvmti_scenarios_bcinstr_BI01_bi01t001_setNewByteCode(JNIEnv *jni_env,
! jobject o, jbyteArray byteCode) {
!
jbyte* elements;
jboolean isCopy;
! newClassSize = jni_env->GetArrayLength(byteCode);
! if (!NSK_JNI_VERIFY(jni_env, newClassSize > 0)) {
nsk_jvmti_setFailStatus();
return NSK_FALSE;
}
NSK_DISPLAY1("\t... got array size: %d\n", newClassSize);
! elements = jni_env->GetByteArrayElements(byteCode, &isCopy);
! if (!NSK_JNI_VERIFY(jni_env, elements != NULL)) {
nsk_jvmti_setFailStatus();
return NSK_FALSE;
}
NSK_DISPLAY1("\t... got elements list: 0x%p\n", (void*)elements);
--- 45,70 ----
* Class: nsk_jvmti_scenarios_bcinstr_BI01_bi01t001
* Method: setNewByteCode
* Signature: ([B)Z
*/
JNIEXPORT jboolean JNICALL
! Java_nsk_jvmti_scenarios_bcinstr_BI01_bi01t001_setNewByteCode(JNIEnv *jni,
! jobject o,
! jbyteArray byteCode) {
! ExceptionCheckingJniEnvPtr jni_env(jni);
jbyte* elements;
jboolean isCopy;
! newClassSize = jni_env->GetArrayLength(byteCode, TRACE_JNI_CALL);
! if (newClassSize <= 0) {
nsk_jvmti_setFailStatus();
return NSK_FALSE;
}
NSK_DISPLAY1("\t... got array size: %d\n", newClassSize);
! elements = jni_env->GetByteArrayElements(byteCode, &isCopy, TRACE_JNI_CALL);
! if (elements == NULL) {
nsk_jvmti_setFailStatus();
return NSK_FALSE;
}
NSK_DISPLAY1("\t... got elements list: 0x%p\n", (void*)elements);
*** 78,88 ****
newClassBytes[j] = (unsigned char)elements[j];
}
NSK_DISPLAY1("\t... copied bytecode: %d bytes\n", (int)newClassSize);
NSK_DISPLAY1("\t... release elements list: 0x%p\n", (void*)elements);
! NSK_TRACE(jni_env->ReleaseByteArrayElements(byteCode, elements, JNI_ABORT));
NSK_DISPLAY0("\t... released\n");
return NSK_TRUE;
}
/* ============================================================================= */
--- 80,90 ----
newClassBytes[j] = (unsigned char)elements[j];
}
NSK_DISPLAY1("\t... copied bytecode: %d bytes\n", (int)newClassSize);
NSK_DISPLAY1("\t... release elements list: 0x%p\n", (void*)elements);
! jni_env->ReleaseByteArrayElements(byteCode, elements, JNI_ABORT, TRACE_JNI_CALL);
NSK_DISPLAY0("\t... released\n");
return NSK_TRUE;
}
/* ============================================================================= */
*** 90,104 ****
* Class: nsk_jvmti_scenarios_bcinstr_BI01_bi01t001
* Method: setClass
* Signature: (Ljava/lang/Class;)V
*/
JNIEXPORT void JNICALL
! Java_nsk_jvmti_scenarios_bcinstr_BI01_bi01t001_setClass(JNIEnv *jni_env,
jobject o, jclass cls) {
!
! oldClassDef.klass = (jclass) jni_env->NewGlobalRef(cls);
! if (!NSK_JNI_VERIFY(jni_env, oldClassDef.klass != NULL)) {
nsk_jvmti_setFailStatus();
}
}
/* ============================================================================= */
--- 92,106 ----
* Class: nsk_jvmti_scenarios_bcinstr_BI01_bi01t001
* Method: setClass
* Signature: (Ljava/lang/Class;)V
*/
JNIEXPORT void JNICALL
! Java_nsk_jvmti_scenarios_bcinstr_BI01_bi01t001_setClass(JNIEnv *jni,
jobject o, jclass cls) {
! ExceptionCheckingJniEnvPtr jni_env(jni);
! oldClassDef.klass = (jclass) jni_env->NewGlobalRef(cls, TRACE_JNI_CALL);
! if (oldClassDef.klass == NULL) {
nsk_jvmti_setFailStatus();
}
}
/* ============================================================================= */
*** 152,161 ****
--- 154,164 ----
/* ============================================================================= */
/** Agent algorithm. */
static void JNICALL
agentProc(jvmtiEnv* jvmti, JNIEnv* agentJNI, void* arg) {
+ ExceptionCheckingJniEnvPtr jni(agentJNI);
/*Wait for debuggee to read new byte codes nsk_jvmti_waitForSync#1*/
NSK_DISPLAY0("Wait for debuggee to read new byte codes nsk_jvmti_waitForSync#1\n");
if (!nsk_jvmti_waitForSync(timeout))
return;
*** 212,222 ****
/*Wait for debuggee to check old byte code works nsk_jvmti_waitForSync#5*/
NSK_DISPLAY0("Wait for debuggee to check old byte code works nsk_jvmti_waitForSync#5\n");
if (!nsk_jvmti_waitForSync(timeout))
return;
! agentJNI->DeleteGlobalRef(oldClassDef.klass);
NSK_DISPLAY0("Let debuggee to finish\n");
if (!nsk_jvmti_resumeSync())
return;
--- 215,225 ----
/*Wait for debuggee to check old byte code works nsk_jvmti_waitForSync#5*/
NSK_DISPLAY0("Wait for debuggee to check old byte code works nsk_jvmti_waitForSync#5\n");
if (!nsk_jvmti_waitForSync(timeout))
return;
! jni->DeleteGlobalRef(oldClassDef.klass, TRACE_JNI_CALL);
NSK_DISPLAY0("Let debuggee to finish\n");
if (!nsk_jvmti_resumeSync())
return;
< prev index next >