Mercurial > hg > truffle
changeset 14376:9e2a544d59cc
8034860: Fatal error due to incorrect thread state during nightly testing
Summary: use the HAS_PENDING_EXCEPTION and CLEAR_PENDING_EXCEPTION macros
Reviewed-by: dholmes, coleenp, dcubed
author | ccheung |
---|---|
date | Fri, 14 Feb 2014 09:50:17 -0800 |
parents | 93206a165a90 |
children | cbdbdd6577f6 |
files | src/share/vm/prims/whitebox.hpp |
diffstat | 1 files changed, 14 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/vm/prims/whitebox.hpp Wed Feb 12 22:16:39 2014 +0000 +++ b/src/share/vm/prims/whitebox.hpp Fri Feb 14 09:50:17 2014 -0800 @@ -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 {