< 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,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" {
*** 45,71 **** * 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); if (!NSK_JVMTI_VERIFY(jvmti->Allocate(newClassSize, &newClassBytes))) { nsk_jvmti_setFailStatus(); return NSK_FALSE; --- 46,69 ---- * Method: setNewByteCode * Signature: ([B)Z */ JNIEXPORT jboolean JNICALL Java_nsk_jvmti_scenarios_bcinstr_BI01_bi01t001_setNewByteCode(JNIEnv *jni_env, ! jobject o, ! jbyteArray byteCode) { ! ExceptionCheckingJniEnvPtr jni(jni_env); jbyte* elements; jboolean isCopy; ! 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->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,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; } /* ============================================================================= */ --- 76,86 ---- 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->ReleaseByteArrayElements(byteCode, elements, JNI_ABORT, TRACE_JNI_CALL); NSK_DISPLAY0("\t... released\n"); return NSK_TRUE; } /* ============================================================================= */
*** 92,106 **** * 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(); ! } } /* ============================================================================= */ /** Callback function for ClassFileLoadHook event. */ --- 90,101 ---- * Signature: (Ljava/lang/Class;)V */ JNIEXPORT void JNICALL Java_nsk_jvmti_scenarios_bcinstr_BI01_bi01t001_setClass(JNIEnv *jni_env, jobject o, jclass cls) { ! ExceptionCheckingJniEnvPtr jni(jni_env); ! oldClassDef.klass = (jclass) jni->NewGlobalRef(cls, TRACE_JNI_CALL); } /* ============================================================================= */ /** Callback function for ClassFileLoadHook event. */
*** 152,161 **** --- 147,157 ---- /* ============================================================================= */ /** 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; --- 208,218 ---- /*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 >