RFR: (8030875) Macros for checking and returning on exceptions

roger riggs roger.riggs at oracle.com
Wed Jan 15 20:52:12 UTC 2014


Hi Martin,

A followup, what is the subtlety that makes it beneficial to wrap
even a single statement in a do {} while (0)?

It makes sense for macros with multiple statements but not for a single
statement substitution of expressions.

For a single statement (w/o ';'), it seems like a redundant overhead
that does not solve an issue.

Thanks, Roger

On 1/14/2014 5:20 PM, Martin Buchholz wrote:
>
>
>
> On Tue, Jan 14, 2014 at 7:54 AM, roger riggs <roger.riggs at oracle.com 
> <mailto:roger.riggs at oracle.com>> wrote:
>
>     Hi David,
>
>     The CHECK_RETURN macros have existed in java.net <http://java.net>
>     for some time and
>     I have not seen any empty statement warnings.
>
>     The CHECK_EXCEPTION macros are new and does not have any uses yet.
>     I don't plan to do any wholesale modification of current sources.
>
>     The macros always produce a valid statement;  (though my c/c++ may
>     be a bit rusty).
>
>
> Macros should not generally be complete statements, including 
> semicolons; then the source code looks like this:
>
> FOO()
>
> which looks (including to emacs) like someone forgot the trailing 
> semicolon.
>
> Instead, these macros should be written using the "well-known" do ( 
> ... ) while (0) idiom, e.g.
>
> #define CHECK_NULL(x) do { if ((x) == NULL) return; } while (0)
>
>     (Note that it has been requested to rename the macros to include a
>     JNU_prefix
>     to be consistent with other macros in jni_util.h. I will propose a
>     separate set of changes for that).
>
>     Roger
>
>
>     On 1/13/2014 9:51 PM, David Holmes wrote:
>
>         Hi Roger,
>
>
>             webrev:
>             http://cr.openjdk.java.net/~rriggs/webrev-check-exception-8030875/
>             <http://cr.openjdk.java.net/%7Erriggs/webrev-check-exception-8030875/>
>
>
>         Do these macro definitions not cause "empty statement"
>         warnings from the compiler? (Existing ones have the same
>         problem I guess)
>
>         Also I don't see any use of the CHECK_EXCEPTION macros? In
>         fact the bulk of changes here seem completely unrelated to the
>         "exception" aspect of this CR.
>
>         Cheers,
>         David
>
>             [1] https://bugs.openjdk.java.net/browse/JDK-8030875
>
>
>




More information about the core-libs-dev mailing list