8031737: CHECK_NULL and CHECK_EXCEPTION macros cleanup
Summary: Rename CHECK_EXCEPTION macros with JNU prefix; use the defensive do {...} while (0) macro definition
Reviewed-by: chegar, mchung, ksrini, lancea, alanb
--- a/jdk/src/share/native/common/jni_util.h Mon Feb 03 10:21:58 2014 -0800
+++ b/jdk/src/share/native/common/jni_util.h Mon Feb 03 16:58:02 2014 -0500
@@ -279,14 +279,37 @@
#define JNU_IsNull(env,obj) ((obj) == NULL)
/************************************************************************
- * Miscellaneous utilities used by the class libraries to check for exceptions
+ * Miscellaneous utilities used by the class libraries to return from
+ * a function if a value is NULL or an exception is pending.
*/
-#define CHECK_NULL(x) if ((x) == NULL) return;
-#define CHECK_NULL_RETURN(x, y) if ((x) == NULL) return (y);
+#define CHECK_NULL(x) \
+ do { \
+ if ((x) == NULL) { \
+ return; \
+ } \
+ } while (0) \
+
+#define CHECK_NULL_RETURN(x, y) \
+ do { \
+ if ((x) == NULL) { \
+ return (y); \
+ } \
+ } while (0) \
-#define CHECK_EXCEPTION(env) if ((*env)->ExceptionCheck(env)) return;
-#define CHECK_EXCEPTION_RETURN(env, y) if ((*env)->ExceptionCheck(env)) return (y);
+#define JNU_CHECK_EXCEPTION(env) \
+ do { \
+ if ((*env)->ExceptionCheck(env)) { \
+ return; \
+ } \
+ } while (0) \
+
+#define JNU_CHECK_EXCEPTION_RETURN(env, y) \
+ do { \
+ if ((*env)->ExceptionCheck(env)) { \
+ return (y); \
+ } \
+ } while (0)
/************************************************************************
* Debugging utilities
--- a/jdk/src/share/native/sun/misc/Version.c Mon Feb 03 10:21:58 2014 -0800
+++ b/jdk/src/share/native/sun/misc/Version.c Mon Feb 03 16:58:02 2014 -0500
@@ -60,15 +60,15 @@
(*func_p)(env, &info, sizeof(info));
setStaticIntField(env, cls, "jvm_major_version", JVM_VERSION_MAJOR(info.jvm_version));
- CHECK_EXCEPTION_RETURN(env, JNI_FALSE);
+ JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE);
setStaticIntField(env, cls, "jvm_minor_version", JVM_VERSION_MINOR(info.jvm_version));
- CHECK_EXCEPTION_RETURN(env, JNI_FALSE);
+ JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE);
setStaticIntField(env, cls, "jvm_micro_version", JVM_VERSION_MICRO(info.jvm_version));
- CHECK_EXCEPTION_RETURN(env, JNI_FALSE);
+ JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE);
setStaticIntField(env, cls, "jvm_build_number", JVM_VERSION_BUILD(info.jvm_version));
- CHECK_EXCEPTION_RETURN(env, JNI_FALSE);
+ JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE);
setStaticIntField(env, cls, "jvm_update_version", info.update_version);
- CHECK_EXCEPTION_RETURN(env, JNI_FALSE);
+ JNU_CHECK_EXCEPTION_RETURN(env, JNI_FALSE);
jvm_special_version = info.special_update_version;
return JNI_TRUE;
@@ -91,15 +91,15 @@
JDK_GetVersionInfo0(&info, sizeof(info));
setStaticIntField(env, cls, "jdk_major_version", JDK_VERSION_MAJOR(info.jdk_version));
- CHECK_EXCEPTION(env);
+ JNU_CHECK_EXCEPTION(env);
setStaticIntField(env, cls, "jdk_minor_version", JDK_VERSION_MINOR(info.jdk_version));
- CHECK_EXCEPTION(env);
+ JNU_CHECK_EXCEPTION(env);
setStaticIntField(env, cls, "jdk_micro_version", JDK_VERSION_MICRO(info.jdk_version));
- CHECK_EXCEPTION(env);
+ JNU_CHECK_EXCEPTION(env);
setStaticIntField(env, cls, "jdk_build_number", JDK_VERSION_BUILD(info.jdk_version));
- CHECK_EXCEPTION(env);
+ JNU_CHECK_EXCEPTION(env);
setStaticIntField(env, cls, "jdk_update_version", info.update_version);
- CHECK_EXCEPTION(env);
+ JNU_CHECK_EXCEPTION(env);
jdk_special_version = info.special_update_version;
}