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