< prev index next >
test/hotspot/jtreg/vmTestbase/nsk/jvmti/scenarios/bcinstr/BI01/bi01t001/bi01t001.cpp
Print this page
rev 52828 : 8213501: Deploy ExceptionJniWrapper for a few tests
Summary:
Reviewed-by:
@@ -22,10 +22,11 @@
*/
#include <string.h>
#include "jvmti.h"
#include "agent_common.h"
+#include "ExceptionCheckingJniEnv.hpp"
#include "jni_tools.h"
#include "jvmti_tools.h"
extern "C" {
@@ -45,27 +46,24 @@
* Method: setNewByteCode
* Signature: ([B)Z
*/
JNIEXPORT jboolean JNICALL
Java_nsk_jvmti_scenarios_bcinstr_BI01_bi01t001_setNewByteCode(JNIEnv *jni_env,
- jobject o, jbyteArray byteCode) {
-
+ jobject o,
+ jbyteArray byteCode) {
+ ExceptionCheckingJniEnvPtr jni(jni_env);
jbyte* elements;
jboolean isCopy;
- newClassSize = jni_env->GetArrayLength(byteCode);
- if (!NSK_JNI_VERIFY(jni_env, newClassSize > 0)) {
+ newClassSize = jni->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);
- if (!NSK_JNI_VERIFY(jni_env, elements != NULL)) {
- nsk_jvmti_setFailStatus();
- return NSK_FALSE;
- }
+ elements = jni->GetByteArrayElements(byteCode, &isCopy, TRACE_JNI_CALL);
NSK_DISPLAY1("\t... got elements list: 0x%p\n", (void*)elements);
if (!NSK_JVMTI_VERIFY(jvmti->Allocate(newClassSize, &newClassBytes))) {
nsk_jvmti_setFailStatus();
return NSK_FALSE;
@@ -78,11 +76,11 @@
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));
+ jni->ReleaseByteArrayElements(byteCode, elements, JNI_ABORT, TRACE_JNI_CALL);
NSK_DISPLAY0("\t... released\n");
return NSK_TRUE;
}
/* ============================================================================= */
@@ -92,15 +90,12 @@
* 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();
- }
+ ExceptionCheckingJniEnvPtr jni(jni_env);
+ oldClassDef.klass = (jclass) jni->NewGlobalRef(cls, TRACE_JNI_CALL);
}
/* ============================================================================= */
/** Callback function for ClassFileLoadHook event. */
@@ -152,10 +147,11 @@
/* ============================================================================= */
/** 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,11 +208,11 @@
/*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);
+ jni->DeleteGlobalRef(oldClassDef.klass, TRACE_JNI_CALL);
NSK_DISPLAY0("Let debuggee to finish\n");
if (!nsk_jvmti_resumeSync())
return;
< prev index next >