8212083: Handle remaining gc/lock native code and fix two strings
Migrate code to using wrapping JNI for exceptions Reviewed-by: phh, tschatzl
This commit is contained in:
parent
d7c7ce19f1
commit
7afa70096a
test/hotspot/jtreg/vmTestbase/nsk/share
gc/lock
jni
BooleanArrayCriticalLocker.cppByteArrayCriticalLocker.cppCharArrayCriticalLocker.cppDoubleArrayCriticalLocker.cppFloatArrayCriticalLocker.cppIntArrayCriticalLocker.cppLongArrayCriticalLocker.cppShortArrayCriticalLocker.cppStringCriticalLocker.cpplibBooleanArrayCriticalLocker.cpplibByteArrayCriticalLocker.cpplibCharArrayCriticalLocker.cpplibDoubleArrayCriticalLocker.cpplibFloatArrayCriticalLocker.cpplibIntArrayCriticalLocker.cpplibLongArrayCriticalLocker.cpplibShortArrayCriticalLocker.cpplibStringCriticalLocker.cpp
jniref
jni
@ -23,6 +23,7 @@
|
||||
#include <jni.h>
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include "ExceptionCheckingJniEnv.hpp"
|
||||
#include "jni_tools.h"
|
||||
|
||||
extern "C" {
|
||||
@ -35,7 +36,9 @@ static jfieldID objFieldId = NULL;
|
||||
* Signature: ([Z)Z
|
||||
*/
|
||||
JNIEXPORT jboolean JNICALL Java_nsk_share_gc_lock_jni_BooleanArrayCriticalLocker_criticalNative
|
||||
(JNIEnv *env, jobject o, jlong enterTime, jlong sleepTime) {
|
||||
(JNIEnv *jni_env, jobject o, jlong enterTime, jlong sleepTime) {
|
||||
ExceptionCheckingJniEnvPtr env(jni_env);
|
||||
|
||||
jsize size, i;
|
||||
jbooleanArray arr;
|
||||
jboolean *pa;
|
||||
@ -44,22 +47,11 @@ JNIEXPORT jboolean JNICALL Java_nsk_share_gc_lock_jni_BooleanArrayCriticalLocker
|
||||
|
||||
if (objFieldId == NULL) {
|
||||
jclass klass = env->GetObjectClass(o);
|
||||
if (klass == NULL) {
|
||||
printf("Error: GetObjectClass returned NULL\n");
|
||||
return JNI_FALSE;
|
||||
}
|
||||
objFieldId = env->GetFieldID(klass, "obj", "Ljava/lang/Object;");
|
||||
if (objFieldId == NULL) {
|
||||
printf("Error: GetFieldID returned NULL\n");
|
||||
return JNI_FALSE;
|
||||
}
|
||||
}
|
||||
arr = (jbooleanArray) env->GetObjectField(o, objFieldId);
|
||||
if (arr == NULL) {
|
||||
printf("Error: GetObjectField returned NULL\n");
|
||||
return JNI_FALSE;
|
||||
}
|
||||
env->SetObjectField(o, objFieldId, NULL);
|
||||
|
||||
size = env->GetArrayLength(arr);
|
||||
start_time = time(NULL);
|
||||
enterTime /= 1000;
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include <jni.h>
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include "ExceptionCheckingJniEnv.hpp"
|
||||
#include "jni_tools.h"
|
||||
|
||||
extern "C" {
|
||||
@ -34,7 +35,9 @@ static jfieldID objFieldId = NULL;
|
||||
* Method: criticalNative
|
||||
*/
|
||||
JNIEXPORT jbyte JNICALL Java_nsk_share_gc_lock_jni_ByteArrayCriticalLocker_criticalNative
|
||||
(JNIEnv *env, jobject o, jlong enterTime, jlong sleepTime) {
|
||||
(JNIEnv *jni_env, jobject o, jlong enterTime, jlong sleepTime) {
|
||||
ExceptionCheckingJniEnvPtr env(jni_env);
|
||||
|
||||
jsize size, i;
|
||||
jbyteArray arr;
|
||||
jbyte *pa;
|
||||
@ -43,22 +46,11 @@ JNIEXPORT jbyte JNICALL Java_nsk_share_gc_lock_jni_ByteArrayCriticalLocker_criti
|
||||
|
||||
if (objFieldId == NULL) {
|
||||
jclass klass = env->GetObjectClass(o);
|
||||
if (klass == NULL) {
|
||||
printf("Error: GetObjectClass returned NULL\n");
|
||||
return 0;
|
||||
}
|
||||
objFieldId = env->GetFieldID(klass, "obj", "Ljava/lang/Object;");
|
||||
if (objFieldId == NULL) {
|
||||
printf("Error: GetFieldID returned NULL\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
arr = (jbyteArray) env->GetObjectField(o, objFieldId);
|
||||
if (arr == NULL) {
|
||||
printf("Error: GetObjectField returned NULL\n");
|
||||
return 0;
|
||||
}
|
||||
env->SetObjectField(o, objFieldId, NULL);
|
||||
|
||||
size = env->GetArrayLength(arr);
|
||||
start_time = time(NULL);
|
||||
enterTime /= 1000;
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include <jni.h>
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include "ExceptionCheckingJniEnv.hpp"
|
||||
#include "jni_tools.h"
|
||||
|
||||
extern "C" {
|
||||
@ -35,7 +36,9 @@ static jfieldID objFieldId = NULL;
|
||||
* Signature: ([Z)Z
|
||||
*/
|
||||
JNIEXPORT jchar JNICALL Java_nsk_share_gc_lock_jni_CharArrayCriticalLocker_criticalNative
|
||||
(JNIEnv *env, jobject o, jlong enterTime, jlong sleepTime) {
|
||||
(JNIEnv *jni_env, jobject o, jlong enterTime, jlong sleepTime) {
|
||||
ExceptionCheckingJniEnvPtr env(jni_env);
|
||||
|
||||
jsize size, i;
|
||||
jcharArray arr;
|
||||
jchar *pa;
|
||||
@ -44,22 +47,11 @@ JNIEXPORT jchar JNICALL Java_nsk_share_gc_lock_jni_CharArrayCriticalLocker_criti
|
||||
|
||||
if (objFieldId == NULL) {
|
||||
jclass klass = env->GetObjectClass(o);
|
||||
if (klass == NULL) {
|
||||
printf("Error: GetObjectClass returned NULL\n");
|
||||
return 0;
|
||||
}
|
||||
objFieldId = env->GetFieldID(klass, "obj", "Ljava/lang/Object;");
|
||||
if (objFieldId == NULL) {
|
||||
printf("Error: GetFieldID returned NULL\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
arr = (jcharArray) env->GetObjectField(o, objFieldId);
|
||||
if (arr == NULL) {
|
||||
printf("Error: GetObjectField returned NULL\n");
|
||||
return JNI_FALSE;
|
||||
}
|
||||
env->SetObjectField(o, objFieldId, NULL);
|
||||
|
||||
size = env->GetArrayLength(arr);
|
||||
start_time = time(NULL);
|
||||
current_time = 0;
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include <jni.h>
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include "ExceptionCheckingJniEnv.hpp"
|
||||
#include "jni_tools.h"
|
||||
|
||||
extern "C" {
|
||||
@ -35,7 +36,9 @@ static jfieldID objFieldId = NULL;
|
||||
* Signature: ([Z)Z
|
||||
*/
|
||||
JNIEXPORT jdouble JNICALL Java_nsk_share_gc_lock_jni_DoubleArrayCriticalLocker_criticalNative
|
||||
(JNIEnv *env, jobject o, jlong enterTime, jlong sleepTime) {
|
||||
(JNIEnv *jni_env, jobject o, jlong enterTime, jlong sleepTime) {
|
||||
ExceptionCheckingJniEnvPtr env(jni_env);
|
||||
|
||||
jsize size, i;
|
||||
jdoubleArray arr;
|
||||
jdouble *pa;
|
||||
@ -44,22 +47,11 @@ JNIEXPORT jdouble JNICALL Java_nsk_share_gc_lock_jni_DoubleArrayCriticalLocker_c
|
||||
|
||||
if (objFieldId == NULL) {
|
||||
jclass klass = env->GetObjectClass(o);
|
||||
if (klass == NULL) {
|
||||
printf("Error: GetObjectClass returned NULL\n");
|
||||
return 0;
|
||||
}
|
||||
objFieldId = env->GetFieldID(klass, "obj", "Ljava/lang/Object;");
|
||||
if (objFieldId == NULL) {
|
||||
printf("Error: GetFieldID returned NULL\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
arr = (jdoubleArray) env->GetObjectField(o, objFieldId);
|
||||
if (arr == NULL) {
|
||||
printf("Error: GetObjectField returned NULL\n");
|
||||
return JNI_FALSE;
|
||||
}
|
||||
env->SetObjectField(o, objFieldId, NULL);
|
||||
|
||||
size = env->GetArrayLength(arr);
|
||||
start_time = time(NULL);
|
||||
enterTime /= 1000;
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include <jni.h>
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include "ExceptionCheckingJniEnv.hpp"
|
||||
#include "jni_tools.h"
|
||||
|
||||
extern "C" {
|
||||
@ -35,7 +36,9 @@ static jfieldID objFieldId = NULL;
|
||||
* Signature: ([Z)Z
|
||||
*/
|
||||
JNIEXPORT jfloat JNICALL Java_nsk_share_gc_lock_jni_FloatArrayCriticalLocker_criticalNative
|
||||
(JNIEnv *env, jobject o, jlong enterTime, jlong sleepTime) {
|
||||
(JNIEnv *jni_env, jobject o, jlong enterTime, jlong sleepTime) {
|
||||
ExceptionCheckingJniEnvPtr env(jni_env);
|
||||
|
||||
jsize size, i;
|
||||
jfloatArray arr;
|
||||
jfloat *pa;
|
||||
@ -44,22 +47,11 @@ JNIEXPORT jfloat JNICALL Java_nsk_share_gc_lock_jni_FloatArrayCriticalLocker_cri
|
||||
|
||||
if (objFieldId == NULL) {
|
||||
jclass klass = env->GetObjectClass(o);
|
||||
if (klass == NULL) {
|
||||
printf("Error: GetObjectClass returned NULL\n");
|
||||
return 0;
|
||||
}
|
||||
objFieldId = env->GetFieldID(klass, "obj", "Ljava/lang/Object;");
|
||||
if (objFieldId == NULL) {
|
||||
printf("Error: GetFieldID returned NULL\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
arr = (jfloatArray) env->GetObjectField(o, objFieldId);
|
||||
if (arr == NULL) {
|
||||
printf("Error: GetObjectField returned NULL\n");
|
||||
return JNI_FALSE;
|
||||
}
|
||||
env->SetObjectField(o, objFieldId, NULL);
|
||||
|
||||
size = env->GetArrayLength(arr);
|
||||
start_time = time(NULL);
|
||||
enterTime /= 1000;
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include <jni.h>
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include "ExceptionCheckingJniEnv.hpp"
|
||||
#include "jni_tools.h"
|
||||
|
||||
extern "C" {
|
||||
@ -35,7 +36,9 @@ static jfieldID objFieldId = NULL;
|
||||
* Signature: ([Z)Z
|
||||
*/
|
||||
JNIEXPORT jint JNICALL Java_nsk_share_gc_lock_jni_IntArrayCriticalLocker_criticalNative
|
||||
(JNIEnv *env, jobject o, jlong enterTime, jlong sleepTime) {
|
||||
(JNIEnv *jni_env, jobject o, jlong enterTime, jlong sleepTime) {
|
||||
ExceptionCheckingJniEnvPtr env(jni_env);
|
||||
|
||||
jsize size, i;
|
||||
jintArray arr;
|
||||
jint *pa;
|
||||
@ -44,22 +47,11 @@ JNIEXPORT jint JNICALL Java_nsk_share_gc_lock_jni_IntArrayCriticalLocker_critica
|
||||
|
||||
if (objFieldId == NULL) {
|
||||
jclass klass = env->GetObjectClass(o);
|
||||
if (klass == NULL) {
|
||||
printf("Error: GetObjectClass returned NULL\n");
|
||||
return 0;
|
||||
}
|
||||
objFieldId = env->GetFieldID(klass, "obj", "Ljava/lang/Object;");
|
||||
if (objFieldId == NULL) {
|
||||
printf("Error: GetFieldID returned NULL\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
arr = (jintArray) env->GetObjectField(o, objFieldId);
|
||||
if (arr == NULL) {
|
||||
printf("Error: GetObjectField returned NULL\n");
|
||||
return JNI_FALSE;
|
||||
}
|
||||
env->SetObjectField(o, objFieldId, NULL);
|
||||
|
||||
size = env->GetArrayLength(arr);
|
||||
start_time = time(NULL);
|
||||
enterTime /= 1000;
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include <jni.h>
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include "ExceptionCheckingJniEnv.hpp"
|
||||
#include "jni_tools.h"
|
||||
|
||||
extern "C" {
|
||||
@ -35,7 +36,9 @@ static jfieldID objFieldId = NULL;
|
||||
* Signature: ([Z)Z
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL Java_nsk_share_gc_lock_jni_LongArrayCriticalLocker_criticalNative
|
||||
(JNIEnv *env, jobject o, jlong enterTime, jlong sleepTime) {
|
||||
(JNIEnv *jni_env, jobject o, jlong enterTime, jlong sleepTime) {
|
||||
ExceptionCheckingJniEnvPtr env(jni_env);
|
||||
|
||||
jsize size, i;
|
||||
jlongArray arr;
|
||||
jlong *pa;
|
||||
@ -44,22 +47,11 @@ JNIEXPORT jlong JNICALL Java_nsk_share_gc_lock_jni_LongArrayCriticalLocker_criti
|
||||
|
||||
if (objFieldId == NULL) {
|
||||
jclass klass = env->GetObjectClass(o);
|
||||
if (klass == NULL) {
|
||||
printf("Error: GetObjectClass returned NULL\n");
|
||||
return 0;
|
||||
}
|
||||
objFieldId = env->GetFieldID(klass, "obj", "Ljava/lang/Object;");
|
||||
if (objFieldId == NULL) {
|
||||
printf("Error: GetFieldID returned NULL\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
arr = (jlongArray) env->GetObjectField(o, objFieldId);
|
||||
if (arr == NULL) {
|
||||
printf("Error: GetObjectField returned NULL\n");
|
||||
return JNI_FALSE;
|
||||
}
|
||||
env->SetObjectField(o, objFieldId, NULL);
|
||||
|
||||
size = env->GetArrayLength(arr);
|
||||
start_time = time(NULL);
|
||||
enterTime /= 1000;
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include <jni.h>
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include "ExceptionCheckingJniEnv.hpp"
|
||||
#include "jni_tools.h"
|
||||
|
||||
extern "C" {
|
||||
@ -35,7 +36,9 @@ static jfieldID objFieldId = NULL;
|
||||
* Signature: ([Z)Z
|
||||
*/
|
||||
JNIEXPORT jshort JNICALL Java_nsk_share_gc_lock_jni_ShortArrayCriticalLocker_criticalNative
|
||||
(JNIEnv *env, jobject o, jlong enterTime, jlong sleepTime) {
|
||||
(JNIEnv *jni_env, jobject o, jlong enterTime, jlong sleepTime) {
|
||||
ExceptionCheckingJniEnvPtr env(jni_env);
|
||||
|
||||
jsize size, i;
|
||||
jshortArray arr;
|
||||
jshort *pa;
|
||||
@ -44,22 +47,11 @@ JNIEXPORT jshort JNICALL Java_nsk_share_gc_lock_jni_ShortArrayCriticalLocker_cri
|
||||
|
||||
if (objFieldId == NULL) {
|
||||
jclass klass = env->GetObjectClass(o);
|
||||
if (klass == NULL) {
|
||||
printf("Error: GetObjectClass returned NULL\n");
|
||||
return 0;
|
||||
}
|
||||
objFieldId = env->GetFieldID(klass, "obj", "Ljava/lang/Object;");
|
||||
if (objFieldId == NULL) {
|
||||
printf("Error: GetFieldID returned NULL\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
arr = (jshortArray) env->GetObjectField(o, objFieldId);
|
||||
if (arr == NULL) {
|
||||
printf("Error: GetObjectField returned NULL\n");
|
||||
return JNI_FALSE;
|
||||
}
|
||||
env->SetObjectField(o, objFieldId, NULL);
|
||||
|
||||
size = env->GetArrayLength(arr);
|
||||
start_time = time(NULL);
|
||||
enterTime /= 1000;
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include <jni.h>
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include "ExceptionCheckingJniEnv.hpp"
|
||||
#include "jni_tools.h"
|
||||
|
||||
extern "C" {
|
||||
@ -35,7 +36,9 @@ static jfieldID objFieldId = NULL;
|
||||
* Signature: ([Z)Z
|
||||
*/
|
||||
JNIEXPORT jchar JNICALL Java_nsk_share_gc_lock_jni_StringCriticalLocker_criticalNative
|
||||
(JNIEnv *env, jobject o, jlong enterTime, jlong sleepTime) {
|
||||
(JNIEnv *jni_env, jobject o, jlong enterTime, jlong sleepTime) {
|
||||
ExceptionCheckingJniEnvPtr env(jni_env);
|
||||
|
||||
jsize size, i;
|
||||
jstring str;
|
||||
const jchar *pa;
|
||||
@ -44,22 +47,11 @@ JNIEXPORT jchar JNICALL Java_nsk_share_gc_lock_jni_StringCriticalLocker_critical
|
||||
|
||||
if (objFieldId == NULL) {
|
||||
jclass klass = env->GetObjectClass(o);
|
||||
if (klass == NULL) {
|
||||
printf("Error: GetObjectClass returned NULL\n");
|
||||
return JNI_FALSE;
|
||||
}
|
||||
objFieldId = env->GetFieldID(klass, "obj", "Ljava/lang/Object;");
|
||||
if (objFieldId == NULL) {
|
||||
printf("Error: GetFieldID returned NULL\n");
|
||||
return JNI_FALSE;
|
||||
}
|
||||
}
|
||||
str = (jstring) env->GetObjectField(o, objFieldId);
|
||||
if (str == NULL) {
|
||||
printf("Error: GetObjectField returned NULL\n");
|
||||
return JNI_FALSE;
|
||||
}
|
||||
env->SetObjectField(o, objFieldId, NULL);
|
||||
|
||||
size = env->GetStringLength(str);
|
||||
start_time = time(NULL);
|
||||
enterTime /= 1000;
|
||||
|
@ -22,5 +22,6 @@
|
||||
*/
|
||||
|
||||
#include "BooleanArrayCriticalLocker.cpp"
|
||||
#include "ExceptionCheckingJniEnv.cpp"
|
||||
#include "jni_tools.cpp"
|
||||
#include "nsk_tools.cpp"
|
||||
|
@ -22,5 +22,6 @@
|
||||
*/
|
||||
|
||||
#include "ByteArrayCriticalLocker.cpp"
|
||||
#include "ExceptionCheckingJniEnv.cpp"
|
||||
#include "jni_tools.cpp"
|
||||
#include "nsk_tools.cpp"
|
||||
|
@ -22,5 +22,6 @@
|
||||
*/
|
||||
|
||||
#include "CharArrayCriticalLocker.cpp"
|
||||
#include "ExceptionCheckingJniEnv.cpp"
|
||||
#include "jni_tools.cpp"
|
||||
#include "nsk_tools.cpp"
|
||||
|
@ -22,5 +22,6 @@
|
||||
*/
|
||||
|
||||
#include "DoubleArrayCriticalLocker.cpp"
|
||||
#include "ExceptionCheckingJniEnv.cpp"
|
||||
#include "jni_tools.cpp"
|
||||
#include "nsk_tools.cpp"
|
||||
|
@ -21,6 +21,7 @@
|
||||
* questions.
|
||||
*/
|
||||
|
||||
#include "ExceptionCheckingJniEnv.cpp"
|
||||
#include "FloatArrayCriticalLocker.cpp"
|
||||
#include "jni_tools.cpp"
|
||||
#include "nsk_tools.cpp"
|
||||
|
@ -21,6 +21,7 @@
|
||||
* questions.
|
||||
*/
|
||||
|
||||
#include "ExceptionCheckingJniEnv.cpp"
|
||||
#include "IntArrayCriticalLocker.cpp"
|
||||
#include "jni_tools.cpp"
|
||||
#include "nsk_tools.cpp"
|
||||
|
@ -21,6 +21,7 @@
|
||||
* questions.
|
||||
*/
|
||||
|
||||
#include "ExceptionCheckingJniEnv.cpp"
|
||||
#include "LongArrayCriticalLocker.cpp"
|
||||
#include "jni_tools.cpp"
|
||||
#include "nsk_tools.cpp"
|
||||
|
@ -21,6 +21,7 @@
|
||||
* questions.
|
||||
*/
|
||||
|
||||
#include "ExceptionCheckingJniEnv.cpp"
|
||||
#include "ShortArrayCriticalLocker.cpp"
|
||||
#include "jni_tools.cpp"
|
||||
#include "nsk_tools.cpp"
|
||||
|
@ -21,6 +21,7 @@
|
||||
* questions.
|
||||
*/
|
||||
|
||||
#include "ExceptionCheckingJniEnv.cpp"
|
||||
#include "StringCriticalLocker.cpp"
|
||||
#include "jni_tools.cpp"
|
||||
#include "nsk_tools.cpp"
|
||||
|
@ -24,8 +24,8 @@
|
||||
#include <jni.h>
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include "jni_tools.h"
|
||||
#include "ExceptionCheckingJniEnv.hpp"
|
||||
#include "jni_tools.h"
|
||||
|
||||
extern "C" {
|
||||
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include <jni.h>
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include "ExceptionCheckingJniEnv.hpp"
|
||||
#include "jni_tools.h"
|
||||
|
||||
extern "C" {
|
||||
@ -35,28 +36,18 @@ static jfieldID objFieldId = NULL;
|
||||
* Signature: (JJ)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_nsk_share_gc_lock_jniref_JNILocalRefLocker_criticalNative
|
||||
(JNIEnv *env, jobject o, jlong enterTime, jlong sleepTime) {
|
||||
(JNIEnv *jni_env, jobject o, jlong enterTime, jlong sleepTime) {
|
||||
ExceptionCheckingJniEnvPtr env(jni_env);
|
||||
|
||||
jobject obj;
|
||||
jobject gref;
|
||||
time_t start_time, current_time;
|
||||
|
||||
if (objFieldId == NULL) {
|
||||
jclass klass = env->GetObjectClass(o);
|
||||
if (klass == NULL) {
|
||||
printf("Error: GetObjectClass returned NULL\n");
|
||||
return;
|
||||
}
|
||||
objFieldId = env->GetFieldID(klass, "obj", "Ljava/lang/Object;");
|
||||
if (objFieldId == NULL) {
|
||||
printf("Error: GetFieldID returned NULL\n");
|
||||
return;
|
||||
}
|
||||
}
|
||||
obj = env->GetObjectField(o, objFieldId);
|
||||
if (obj == NULL) {
|
||||
printf("Error: GetObjectField returned NULL\n");
|
||||
return;
|
||||
}
|
||||
env->SetObjectField(o, objFieldId, NULL);
|
||||
start_time = time(NULL);
|
||||
enterTime /= 1000;
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include <jni.h>
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include "ExceptionCheckingJniEnv.hpp"
|
||||
#include "jni_tools.h"
|
||||
|
||||
extern "C" {
|
||||
@ -35,29 +36,21 @@ static jfieldID objFieldId = NULL;
|
||||
* Signature: (JJ)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_nsk_share_gc_lock_jniref_JNIRefLocker_criticalNative
|
||||
(JNIEnv *env, jobject o, jlong enterTime, jlong sleepTime) {
|
||||
(JNIEnv *jni_env, jobject o, jlong enterTime, jlong sleepTime) {
|
||||
ExceptionCheckingJniEnvPtr env(jni_env);
|
||||
|
||||
jobject obj;
|
||||
jobject gref, lref, gwref;
|
||||
time_t start_time, current_time;
|
||||
|
||||
if (objFieldId == NULL) {
|
||||
jclass klass = env->GetObjectClass(o);
|
||||
if (klass == NULL) {
|
||||
printf("Error: GetObjectClass returned NULL\n");
|
||||
return;
|
||||
}
|
||||
objFieldId = env->GetFieldID(klass, "obj", "Ljava/lang/Object;");
|
||||
if (objFieldId == NULL) {
|
||||
printf("Error: GetFieldID returned NULL\n");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
obj = env->GetObjectField(o, objFieldId);
|
||||
if (obj == NULL) {
|
||||
printf("Error: GetObjectField returned NULL\n");
|
||||
return;
|
||||
}
|
||||
env->SetObjectField(o, objFieldId, NULL);
|
||||
|
||||
start_time = time(NULL);
|
||||
enterTime /= 1000;
|
||||
current_time = 0;
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include <jni.h>
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include "ExceptionCheckingJniEnv.hpp"
|
||||
#include "jni_tools.h"
|
||||
|
||||
extern "C" {
|
||||
@ -35,29 +36,20 @@ static jfieldID objFieldId = NULL;
|
||||
* Signature: (JJ)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_nsk_share_gc_lock_jniref_JNIWeakGlobalRefLocker_criticalNative
|
||||
(JNIEnv *env, jobject o, jlong enterTime, jlong sleepTime) {
|
||||
(JNIEnv *jni_env, jobject o, jlong enterTime, jlong sleepTime) {
|
||||
ExceptionCheckingJniEnvPtr env(jni_env);
|
||||
|
||||
jobject obj;
|
||||
jobject gref;
|
||||
time_t start_time, current_time;
|
||||
|
||||
if (objFieldId == NULL) {
|
||||
jclass klass = env->GetObjectClass(o);
|
||||
if (klass == NULL) {
|
||||
printf("Error: GetObjectClass returned NULL\n");
|
||||
return;
|
||||
}
|
||||
objFieldId = env->GetFieldID(klass, "obj", "Ljava/lang/Object;");
|
||||
if (objFieldId == NULL) {
|
||||
printf("Error: GetFieldID returned NULL\n");
|
||||
return;
|
||||
}
|
||||
}
|
||||
obj = env->GetObjectField(o, objFieldId);
|
||||
if (obj == NULL) {
|
||||
printf("Error: GetObjectField returned NULL\n");
|
||||
return;
|
||||
}
|
||||
env->SetObjectField(o, objFieldId, NULL);
|
||||
|
||||
start_time = time(NULL);
|
||||
enterTime /= 1000;
|
||||
current_time = 0;
|
||||
|
@ -21,7 +21,7 @@
|
||||
* questions.
|
||||
*/
|
||||
|
||||
#include "ExceptionCheckingJniEnv.cpp"
|
||||
#include "JNIGlobalRefLocker.cpp"
|
||||
#include "jni_tools.cpp"
|
||||
#include "nsk_tools.cpp"
|
||||
#include "ExceptionCheckingJniEnv.cpp"
|
||||
|
@ -21,6 +21,7 @@
|
||||
* questions.
|
||||
*/
|
||||
|
||||
#include "ExceptionCheckingJniEnv.cpp"
|
||||
#include "JNILocalRefLocker.cpp"
|
||||
#include "jni_tools.cpp"
|
||||
#include "nsk_tools.cpp"
|
||||
|
@ -21,6 +21,7 @@
|
||||
* questions.
|
||||
*/
|
||||
|
||||
#include "ExceptionCheckingJniEnv.cpp"
|
||||
#include "JNIRefLocker.cpp"
|
||||
#include "jni_tools.cpp"
|
||||
#include "nsk_tools.cpp"
|
||||
|
@ -21,6 +21,7 @@
|
||||
* questions.
|
||||
*/
|
||||
|
||||
#include "ExceptionCheckingJniEnv.cpp"
|
||||
#include "JNIWeakGlobalRefLocker.cpp"
|
||||
#include "jni_tools.cpp"
|
||||
#include "nsk_tools.cpp"
|
||||
|
@ -22,6 +22,8 @@
|
||||
* questions.
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "ExceptionCheckingJniEnv.hpp"
|
||||
|
||||
namespace {
|
||||
@ -86,7 +88,7 @@ jclass ExceptionCheckingJniEnv::GetObjectClass(jobject obj) {
|
||||
}
|
||||
|
||||
jfieldID ExceptionCheckingJniEnv::GetFieldID(jclass klass, const char *name, const char* type) {
|
||||
JNIVerifier<jfieldID> marker(this, "GetObjectClass");
|
||||
JNIVerifier<jfieldID> marker(this, "GetFieldID");
|
||||
return marker.ResultNotNull(_jni_env->GetFieldID(klass, name, type));
|
||||
}
|
||||
|
||||
@ -101,7 +103,7 @@ void ExceptionCheckingJniEnv::SetObjectField(jobject obj, jfieldID field, jobjec
|
||||
}
|
||||
|
||||
jobject ExceptionCheckingJniEnv::NewGlobalRef(jobject obj) {
|
||||
JNIVerifier<jobject> marker(this, "GetObjectField");
|
||||
JNIVerifier<jobject> marker(this, "NewGlobalRef");
|
||||
return marker.ResultNotNull(_jni_env->NewGlobalRef(obj));
|
||||
}
|
||||
|
||||
@ -109,3 +111,53 @@ void ExceptionCheckingJniEnv::DeleteGlobalRef(jobject obj) {
|
||||
JNIVerifier<> marker(this, "DeleteGlobalRef");
|
||||
_jni_env->DeleteGlobalRef(obj);
|
||||
}
|
||||
|
||||
jobject ExceptionCheckingJniEnv::NewLocalRef(jobject obj) {
|
||||
JNIVerifier<jobject> marker(this, "NewLocalRef");
|
||||
return marker.ResultNotNull(_jni_env->NewLocalRef(obj));
|
||||
}
|
||||
|
||||
void ExceptionCheckingJniEnv::DeleteLocalRef(jobject obj) {
|
||||
JNIVerifier<> marker(this, "DeleteLocalRef");
|
||||
_jni_env->DeleteLocalRef(obj);
|
||||
}
|
||||
|
||||
jweak ExceptionCheckingJniEnv::NewWeakGlobalRef(jobject obj) {
|
||||
JNIVerifier<jweak> marker(this, "NewWeakGlobalRef");
|
||||
return marker.ResultNotNull(_jni_env->NewWeakGlobalRef(obj));
|
||||
}
|
||||
|
||||
void ExceptionCheckingJniEnv::DeleteWeakGlobalRef(jweak weak_ref) {
|
||||
JNIVerifier<> marker(this, "DeleteWeakGlobalRef");
|
||||
_jni_env->DeleteWeakGlobalRef(weak_ref);
|
||||
}
|
||||
|
||||
jsize ExceptionCheckingJniEnv::GetArrayLength(jarray array) {
|
||||
JNIVerifier<> marker(this, "GetArrayLength");
|
||||
return _jni_env->GetArrayLength(array);
|
||||
}
|
||||
|
||||
jsize ExceptionCheckingJniEnv::GetStringLength(jstring str) {
|
||||
JNIVerifier<> marker(this, "GetStringLength");
|
||||
return _jni_env->GetStringLength(str);
|
||||
}
|
||||
|
||||
void* ExceptionCheckingJniEnv::GetPrimitiveArrayCritical(jarray array, jboolean* isCopy) {
|
||||
JNIVerifier<> marker(this, "GetPrimitiveArrayCritical");
|
||||
return marker.ResultNotNull(_jni_env->GetPrimitiveArrayCritical(array, isCopy));
|
||||
}
|
||||
|
||||
void ExceptionCheckingJniEnv::ReleasePrimitiveArrayCritical(jarray array, void* carray, jint mode) {
|
||||
JNIVerifier<> marker(this, "ReleasePrimitiveArrayCritical");
|
||||
_jni_env->ReleasePrimitiveArrayCritical(array, carray, mode);
|
||||
}
|
||||
|
||||
const jchar* ExceptionCheckingJniEnv::GetStringCritical(jstring str, jboolean* isCopy) {
|
||||
JNIVerifier<const jchar*> marker(this, "GetPrimitiveArrayCritical");
|
||||
return marker.ResultNotNull(_jni_env->GetStringCritical(str, isCopy));
|
||||
}
|
||||
|
||||
void ExceptionCheckingJniEnv::ReleaseStringCritical(jstring str, const jchar* carray) {
|
||||
JNIVerifier<> marker(this, "ReleaseStringCritical");
|
||||
_jni_env->ReleaseStringCritical(str, carray);
|
||||
}
|
||||
|
@ -66,8 +66,20 @@ class ExceptionCheckingJniEnv {
|
||||
jobject GetObjectField(jobject obj, jfieldID field);
|
||||
void SetObjectField(jobject obj, jfieldID field, jobject value);
|
||||
|
||||
jsize GetArrayLength(jarray array);
|
||||
jsize GetStringLength(jstring str);
|
||||
|
||||
void* GetPrimitiveArrayCritical(jarray array, jboolean* isCopy);
|
||||
void ReleasePrimitiveArrayCritical(jarray array, void* carray, jint mode);
|
||||
const jchar* GetStringCritical(jstring str, jboolean* isCopy);
|
||||
void ReleaseStringCritical(jstring str, const jchar* carray);
|
||||
|
||||
jobject NewGlobalRef(jobject obj);
|
||||
void DeleteGlobalRef(jobject obj);
|
||||
jobject NewLocalRef(jobject ref);
|
||||
void DeleteLocalRef(jobject ref);
|
||||
jweak NewWeakGlobalRef(jobject obj);
|
||||
void DeleteWeakGlobalRef(jweak obj);
|
||||
|
||||
// ExceptionCheckingJniEnv methods.
|
||||
JNIEnv* GetJNIEnv() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user