< prev index next >

test/hotspot/jtreg/vmTestbase/nsk/share/jni/ExceptionCheckingJniEnv.hpp

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

*** 44,87 **** * ... * } * * Can be simplified to: * ... ExceptionCheckingJniEnv* env ... ! * jclass klass = env->GetObjectClass(o); * * Where now the JNI Exception checking and the NULL return checking are done * internally and will perform whatever action the ErrorHandler requires. * * By default, the error handler describes the exception via the JNI * ExceptionDescribe method and calls FatalError. - * - * Note: at a future date, this will also include the tracing mechanism done in - * NSK_VERIFY, which will thus embed its logic into the ExceptionCheckingJniEnv - * and clearing that up for the code readers and writers. */ class ExceptionCheckingJniEnv { public: // JNIEnv API redefinitions. ! jfieldID GetFieldID(jclass klass, const char *name, const char* type); ! jclass GetObjectClass(jobject obj); ! 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() { return _jni_env; } --- 44,112 ---- * ... * } * * Can be simplified to: * ... ExceptionCheckingJniEnv* env ... ! * jclass klass = env->GetObjectClass(o, TRACE_JNI_CALL); * * Where now the JNI Exception checking and the NULL return checking are done * internally and will perform whatever action the ErrorHandler requires. * + * Note the TRACE_JNI_CALL parameter that allows to trace where the call is + * happening from for debugging. + * * By default, the error handler describes the exception via the JNI * ExceptionDescribe method and calls FatalError. */ + + #define TRACE_JNI_CALL __LINE__, __FILE__ + class ExceptionCheckingJniEnv { public: // JNIEnv API redefinitions. ! jclass FindClass(const char *name, int line, const char* file_name); ! ! jfieldID GetStaticFieldID(jclass klass, const char* name, const char* type, ! int line, const char* file_name); ! jfieldID GetFieldID(jclass klass, const char* name, const char* type, ! int line, const char* file_name); ! jmethodID GetMethodID(jclass klass, const char* name, const char* sig, ! int line, const char* file_name); ! ! jclass GetObjectClass(jobject obj, int line, const char* file_name); ! jobject GetObjectField(jobject obj, jfieldID field, int line, const char* file_name); ! jobject GetStaticObjectField(jclass kls, jfieldID field, int line, const char* file_name); ! void SetObjectField(jobject obj, jfieldID field, jobject value, ! int line, const char* file_name); ! ! jsize GetArrayLength(jarray array, int line, const char* file_name); ! jsize GetStringLength(jstring str, int line, const char* file_name); ! ! void* GetPrimitiveArrayCritical(jarray array, jboolean* isCopy, ! int line, const char* file_name); ! void ReleasePrimitiveArrayCritical(jarray array, void* carray, jint mode, ! int line, const char* file_name); ! const jchar* GetStringCritical(jstring str, jboolean* isCopy, ! int line, const char* file_name); ! void ReleaseStringCritical(jstring str, const jchar* carray, ! int line, const char* file_name); ! ! jbyte* GetByteArrayElements(jbyteArray array, jboolean* isCopy, ! int line, const char* file_name); ! void ReleaseByteArrayElements(jbyteArray array, jbyte* byte_array, jint mode, ! int line, const char* file_name); ! jint RegisterNatives(jclass clazz, const JNINativeMethod *methods, jint nMethods, ! int line, const char* file_name); ! ! jobject NewObject(jclass kls, jmethodID methodID, ! int line, const char* file_name, ...); ! jobject NewGlobalRef(jobject obj, int line, const char* file_name); ! void DeleteGlobalRef(jobject obj, int line, const char* file_name); ! jobject NewLocalRef(jobject ref, int line, const char* file_name); ! void DeleteLocalRef(jobject ref, int line, const char* file_name); ! jweak NewWeakGlobalRef(jobject obj, int line, const char* file_name); ! void DeleteWeakGlobalRef(jweak obj, int line, const char* file_name); // ExceptionCheckingJniEnv methods. JNIEnv* GetJNIEnv() { return _jni_env; }
< prev index next >