8034860: Fatal error due to incorrect thread state during nightly testing

Use the HAS_PENDING_EXCEPTION and CLEAR_PENDING_EXCEPTION macros

Reviewed-by: dholmes, coleenp, dcubed
This commit is contained in:
Calvin Cheung 2014-02-14 09:50:17 -08:00
parent 804e3ed06d
commit 297485c528

View File

@ -36,20 +36,22 @@
#define WB_END JNI_END
#define WB_METHOD_DECLARE(result_type) extern "C" result_type JNICALL
#define CHECK_JNI_EXCEPTION_(env, value) \
do { \
if (env->ExceptionCheck()) { \
env->ExceptionClear(); \
return(value); \
} \
#define CHECK_JNI_EXCEPTION_(env, value) \
do { \
JavaThread* THREAD = JavaThread::thread_from_jni_environment(env); \
if (HAS_PENDING_EXCEPTION) { \
CLEAR_PENDING_EXCEPTION; \
return(value); \
} \
} while (0)
#define CHECK_JNI_EXCEPTION(env) \
do { \
if (env->ExceptionCheck()) { \
env->ExceptionClear(); \
return; \
} \
#define CHECK_JNI_EXCEPTION(env) \
do { \
JavaThread* THREAD = JavaThread::thread_from_jni_environment(env); \
if (HAS_PENDING_EXCEPTION) { \
CLEAR_PENDING_EXCEPTION; \
return; \
} \
} while (0)
class WhiteBox : public AllStatic {