< prev index next >

test/hotspot/jtreg/vmTestbase/gc/g1/unloading/libdefine.cpp

Print this page
rev 51585 : [mq]: macros-non-jvmti

*** 29,69 **** #define STATUS_FAILED 2 #define STATUS_PASSED 0 #define REFERENCES_ARRAY_SIZE 10000000 - #ifndef JNI_ENV_ARG - - #ifdef __cplusplus - #define JNI_ENV_ARG(x, y) y - #define JNI_ENV_PTR(x) x - #else - #define JNI_ENV_ARG(x, y) x , y - #define JNI_ENV_PTR(x) (*x) - #endif - - #endif - #ifndef _Included_gc_g1_unloading_unloading_classloaders_JNIClassloader #define _Included_gc_g1_unloading_unloading_classloaders_JNIClassloader - #ifdef __cplusplus extern "C" { - #endif /* * Class: gc_g1_unloading_unloading_classloaders_JNIClassloader * Method: loadThroughJNI0 * Signature: (Ljava/lang/String;Ljava/lang/ClassLoader;[B)Ljava/lang/Class; */ JNIEXPORT jclass JNICALL Java_gc_g1_unloading_classloaders_JNIClassloader_loadThroughJNI0 (JNIEnv * env, jclass clazz, jstring className, jobject classLoader, jbyteArray bytecode) { ! const char * classNameChar = JNI_ENV_PTR(env)->GetStringUTFChars(JNI_ENV_ARG(env, className), NULL); ! jbyte * arrayContent = JNI_ENV_PTR(env)->GetByteArrayElements(JNI_ENV_ARG(env, bytecode), NULL); ! jsize bytecodeLength = JNI_ENV_PTR(env)->GetArrayLength(JNI_ENV_ARG(env, bytecode)); ! jclass returnValue = JNI_ENV_PTR(env)->DefineClass(JNI_ENV_ARG(env, classNameChar), classLoader, arrayContent, bytecodeLength); if (!returnValue) { printf("ERROR: DefineClass call returned NULL by some reason. Classloading failed.\n"); } return returnValue; --- 29,55 ---- #define STATUS_FAILED 2 #define STATUS_PASSED 0 #define REFERENCES_ARRAY_SIZE 10000000 #ifndef _Included_gc_g1_unloading_unloading_classloaders_JNIClassloader #define _Included_gc_g1_unloading_unloading_classloaders_JNIClassloader extern "C" { /* * Class: gc_g1_unloading_unloading_classloaders_JNIClassloader * Method: loadThroughJNI0 * Signature: (Ljava/lang/String;Ljava/lang/ClassLoader;[B)Ljava/lang/Class; */ JNIEXPORT jclass JNICALL Java_gc_g1_unloading_classloaders_JNIClassloader_loadThroughJNI0 (JNIEnv * env, jclass clazz, jstring className, jobject classLoader, jbyteArray bytecode) { ! const char * classNameChar = env->GetStringUTFChars(className, NULL); ! jbyte * arrayContent = env->GetByteArrayElements(bytecode, NULL); ! jsize bytecodeLength = env->GetArrayLength(bytecode); ! jclass returnValue = env->DefineClass(classNameChar, classLoader, arrayContent, bytecodeLength); if (!returnValue) { printf("ERROR: DefineClass call returned NULL by some reason. Classloading failed.\n"); } return returnValue;
*** 79,107 **** JavaVM * jvm; jvmtiEnv * jvmti; jvmtiError err; jvmtiCapabilities caps; jvmtiClassDefinition classDef; ! jint jint_err = JNI_ENV_PTR(env)->GetJavaVM(JNI_ENV_ARG(env, &jvm)); if (jint_err) { printf("GetJavaVM returned nonzero: %d", jint_err); return STATUS_FAILED; } ! jint_err = JNI_ENV_PTR(jvm)->GetEnv(JNI_ENV_ARG(jvm, (void **)&jvmti), JVMTI_VERSION_1_0); if (jint_err) { printf("GetEnv returned nonzero: %d", jint_err); return STATUS_FAILED; } ! err = JNI_ENV_PTR(jvmti)->GetPotentialCapabilities(JNI_ENV_ARG(jvmti, &caps)); if (err != JVMTI_ERROR_NONE) { printf("(GetPotentialCapabilities) unexpected error: %d\n",err); return JNI_ERR; } ! err = JNI_ENV_PTR(jvmti)->AddCapabilities(JNI_ENV_ARG(jvmti, &caps)); if (err != JVMTI_ERROR_NONE) { printf("(AddCapabilities) unexpected error: %d\n", err); return JNI_ERR; } --- 65,93 ---- JavaVM * jvm; jvmtiEnv * jvmti; jvmtiError err; jvmtiCapabilities caps; jvmtiClassDefinition classDef; ! jint jint_err = env->GetJavaVM(&jvm); if (jint_err) { printf("GetJavaVM returned nonzero: %d", jint_err); return STATUS_FAILED; } ! jint_err = jvm->GetEnv((void **) &jvmti, JVMTI_VERSION_1_0); if (jint_err) { printf("GetEnv returned nonzero: %d", jint_err); return STATUS_FAILED; } ! err = jvmti->GetPotentialCapabilities(&caps); if (err != JVMTI_ERROR_NONE) { printf("(GetPotentialCapabilities) unexpected error: %d\n",err); return JNI_ERR; } ! err = jvmti->AddCapabilities(&caps); if (err != JVMTI_ERROR_NONE) { printf("(AddCapabilities) unexpected error: %d\n", err); return JNI_ERR; }
*** 110,129 **** return STATUS_FAILED; } classDef.klass = redefCls; classDef.class_byte_count = ! JNI_ENV_PTR(env)->GetArrayLength(JNI_ENV_ARG(env, classBytes)); classDef.class_bytes = (unsigned char *) ! JNI_ENV_PTR(env)->GetByteArrayElements(JNI_ENV_ARG(env, classBytes), NULL); if (fl == 2) { printf(">>>>>>>> Invoke RedefineClasses():\n"); printf("\tnew class byte count=%d\n", classDef.class_byte_count); } ! err = JNI_ENV_PTR(jvmti)->RedefineClasses(JNI_ENV_ARG(jvmti, 1), &classDef); if (err != JVMTI_ERROR_NONE) { printf("%s: Failed to call RedefineClasses():\n", __FILE__); printf("\tthe function returned error %d\n", err); printf("\tFor more info about this error see the JVMTI spec.\n"); return STATUS_FAILED; --- 96,115 ---- return STATUS_FAILED; } classDef.klass = redefCls; classDef.class_byte_count = ! env->GetArrayLength(classBytes); classDef.class_bytes = (unsigned char *) ! env->GetByteArrayElements(classBytes, NULL); if (fl == 2) { printf(">>>>>>>> Invoke RedefineClasses():\n"); printf("\tnew class byte count=%d\n", classDef.class_byte_count); } ! err = jvmti->RedefineClasses(1, &classDef); if (err != JVMTI_ERROR_NONE) { printf("%s: Failed to call RedefineClasses():\n", __FILE__); printf("\tthe function returned error %d\n", err); printf("\tFor more info about this error see the JVMTI spec.\n"); return STATUS_FAILED;
*** 143,153 **** * Signature: (Ljava/lang/Object;)I */ JNIEXPORT jint JNICALL Java_gc_g1_unloading_keepref_JNIGlobalRefHolder_keepGlobalJNIReference (JNIEnv * env, jclass clazz, jobject obj) { int returnValue; ! referencesArray[firstFreeIndex] = JNI_ENV_PTR(env)->NewGlobalRef(JNI_ENV_ARG(env, obj)); printf("checkpoint1 %d \n", firstFreeIndex); returnValue = firstFreeIndex; firstFreeIndex++; return returnValue; } --- 129,139 ---- * Signature: (Ljava/lang/Object;)I */ JNIEXPORT jint JNICALL Java_gc_g1_unloading_keepref_JNIGlobalRefHolder_keepGlobalJNIReference (JNIEnv * env, jclass clazz, jobject obj) { int returnValue; ! referencesArray[firstFreeIndex] = env->NewGlobalRef(obj); printf("checkpoint1 %d \n", firstFreeIndex); returnValue = firstFreeIndex; firstFreeIndex++; return returnValue; }
*** 157,167 **** * Method: deleteGlobalJNIReference * Signature: (I)V */ JNIEXPORT void JNICALL Java_gc_g1_unloading_keepref_JNIGlobalRefHolder_deleteGlobalJNIReference (JNIEnv * env, jclass clazz, jint index) { ! JNI_ENV_PTR(env)->DeleteGlobalRef(JNI_ENV_ARG(env, referencesArray[index])); } /* * Class: gc_g1_unloading_unloading_keepref_JNILocalRefHolder --- 143,153 ---- * Method: deleteGlobalJNIReference * Signature: (I)V */ JNIEXPORT void JNICALL Java_gc_g1_unloading_keepref_JNIGlobalRefHolder_deleteGlobalJNIReference (JNIEnv * env, jclass clazz, jint index) { ! env->DeleteGlobalRef(referencesArray[index]); } /* * Class: gc_g1_unloading_unloading_keepref_JNILocalRefHolder
*** 183,194 **** objectClazz = env->FindClass("Ljava/lang/Object;"); waitMethod = env->GetMethodID(objectClazz, "wait", "()V"); env->CallVoidMethod(syncObject, waitMethod); printf("checkpoint2 \n"); - } - - - #ifdef __cplusplus } ! #endif #endif --- 169,176 ---- objectClazz = env->FindClass("Ljava/lang/Object;"); waitMethod = env->GetMethodID(objectClazz, "wait", "()V"); env->CallVoidMethod(syncObject, waitMethod); printf("checkpoint2 \n"); } ! } #endif
< prev index next >