< prev index next >

test/hotspot/jtreg/vmTestbase/nsk/share/gc/lock/jni/StringCriticalLocker.cpp

Print this page
rev 52432 : 8213501: Deploy ExceptionJniWrapper for a few tests
Summary:
Reviewed-by:

*** 35,76 **** * Method: criticalNative * Signature: ([Z)Z */ JNIEXPORT jchar JNICALL Java_nsk_share_gc_lock_jni_StringCriticalLocker_criticalNative (JNIEnv *jni_env, jobject o, jlong enterTime, jlong sleepTime) { ! ExceptionCheckingJniEnvPtr env(jni_env); jsize size, i; jstring str; const jchar *pa; jchar hash = 0; time_t start_time, current_time; if (objFieldId == NULL) { ! jclass klass = env->GetObjectClass(o); ! objFieldId = env->GetFieldID(klass, "obj", "Ljava/lang/Object;"); } ! str = (jstring) env->GetObjectField(o, objFieldId); ! env->SetObjectField(o, objFieldId, NULL); ! size = env->GetStringLength(str); start_time = time(NULL); enterTime /= 1000; current_time = 0; while (current_time - start_time < enterTime) { ! pa = env->GetStringCritical(str, NULL); if (pa != NULL) { for (i = 0; i < size; ++i) hash ^= pa[i]; } else { hash = JNI_FALSE; } mssleep((long) sleepTime); ! env->ReleaseStringCritical(str, pa); mssleep((long) sleepTime); current_time = time(NULL); } ! env->SetObjectField(o, objFieldId, str); return hash; } } --- 35,76 ---- * Method: criticalNative * Signature: ([Z)Z */ JNIEXPORT jchar JNICALL Java_nsk_share_gc_lock_jni_StringCriticalLocker_criticalNative (JNIEnv *jni_env, jobject o, jlong enterTime, jlong sleepTime) { ! ExceptionCheckingJniEnvPtr jni(jni_env); jsize size, i; jstring str; const jchar *pa; jchar 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); } ! str = (jstring) jni->GetObjectField(o, objFieldId, TRACE_JNI_CALL); ! jni->SetObjectField(o, objFieldId, NULL, TRACE_JNI_CALL); ! size = jni->GetStringLength(str, TRACE_JNI_CALL); start_time = time(NULL); enterTime /= 1000; current_time = 0; while (current_time - start_time < enterTime) { ! pa = jni->GetStringCritical(str, NULL, TRACE_JNI_CALL); if (pa != NULL) { for (i = 0; i < size; ++i) hash ^= pa[i]; } else { hash = JNI_FALSE; } mssleep((long) sleepTime); ! jni->ReleaseStringCritical(str, pa, TRACE_JNI_CALL); mssleep((long) sleepTime); current_time = time(NULL); } ! jni->SetObjectField(o, objFieldId, str, TRACE_JNI_CALL); return hash; } }
< prev index next >