changeset 9229:fb89dc4fe8da

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
author rriggs
date Mon, 03 Feb 2014 16:58:02 -0500
parents aa95d8422cb6
children 078211e37e20
files src/share/native/common/jni_util.h src/share/native/sun/misc/Version.c
diffstat 2 files changed, 38 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/native/common/jni_util.h	Mon Feb 03 10:21:58 2014 -0800
+++ b/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_EXCEPTION(env) if ((*env)->ExceptionCheck(env)) return;
-#define CHECK_EXCEPTION_RETURN(env, y) if ((*env)->ExceptionCheck(env)) return (y);
+#define CHECK_NULL_RETURN(x, y)                 \
+    do {                                        \
+        if ((x) == NULL) {                      \
+            return (y);                         \
+        }                                       \
+    } while (0)                                 \
+
+#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/src/share/native/sun/misc/Version.c	Mon Feb 03 10:21:58 2014 -0800
+++ b/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;
 }