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