< prev index next >
test/hotspot/jtreg/vmTestbase/nsk/share/gc/lock/jni/DoubleArrayCriticalLocker.cpp
Print this page
rev 52828 : 8213501: Deploy ExceptionJniWrapper for a few tests
Summary:
Reviewed-by:
*** 35,76 ****
* Method: criticalNative
* Signature: ([Z)Z
*/
JNIEXPORT jdouble JNICALL Java_nsk_share_gc_lock_jni_DoubleArrayCriticalLocker_criticalNative
(JNIEnv *jni_env, jobject o, jlong enterTime, jlong sleepTime) {
! ExceptionCheckingJniEnvPtr env(jni_env);
jsize size, i;
jdoubleArray arr;
jdouble *pa;
jdouble hash = 0;
time_t start_time, current_time;
if (objFieldId == NULL) {
! jclass klass = env->GetObjectClass(o);
! objFieldId = env->GetFieldID(klass, "obj", "Ljava/lang/Object;");
}
! arr = (jdoubleArray) env->GetObjectField(o, objFieldId);
! env->SetObjectField(o, objFieldId, NULL);
! size = env->GetArrayLength(arr);
start_time = time(NULL);
enterTime /= 1000;
current_time = 0;
while (current_time - start_time < enterTime) {
! pa = (jdouble*) env->GetPrimitiveArrayCritical(arr, NULL);
if (pa != NULL) {
for (i = 0; i < size; ++i)
hash += pa[i];
} else {
hash = 0;
}
mssleep((long) sleepTime);
! env->ReleasePrimitiveArrayCritical(arr, pa, 0);
mssleep((long) sleepTime);
current_time = time(NULL);
}
! env->SetObjectField(o, objFieldId, arr);
return hash;
}
}
--- 35,76 ----
* Method: criticalNative
* Signature: ([Z)Z
*/
JNIEXPORT jdouble JNICALL Java_nsk_share_gc_lock_jni_DoubleArrayCriticalLocker_criticalNative
(JNIEnv *jni_env, jobject o, jlong enterTime, jlong sleepTime) {
! ExceptionCheckingJniEnvPtr jni(jni_env);
jsize size, i;
jdoubleArray arr;
jdouble *pa;
jdouble hash = 0;
time_t start_time, current_time;
if (objFieldId == NULL) {
! jclass klass = jni->GetObjectClass(o, TRACE_JNI_CALL);
! objFieldId = jni->GetFieldID(klass, "obj", "Ljava/lang/Object;", TRACE_JNI_CALL);
}
! arr = (jdoubleArray) jni->GetObjectField(o, objFieldId, TRACE_JNI_CALL);
! jni->SetObjectField(o, objFieldId, NULL, TRACE_JNI_CALL);
! size = jni->GetArrayLength(arr, TRACE_JNI_CALL);
start_time = time(NULL);
enterTime /= 1000;
current_time = 0;
while (current_time - start_time < enterTime) {
! pa = (jdouble*) jni->GetPrimitiveArrayCritical(arr, NULL, TRACE_JNI_CALL);
if (pa != NULL) {
for (i = 0; i < size; ++i)
hash += pa[i];
} else {
hash = 0;
}
mssleep((long) sleepTime);
! jni->ReleasePrimitiveArrayCritical(arr, pa, 0, TRACE_JNI_CALL);
mssleep((long) sleepTime);
current_time = time(NULL);
}
! jni->SetObjectField(o, objFieldId, arr, TRACE_JNI_CALL);
return hash;
}
}
< prev index next >