Definitely a useful macro. I too would prefer a name like TO_JBOOLEAN since it reveals the result type. Also all uppercase to identify it as a macro. If we are paranoid and want to reduce the chance of a name collision then JNU_TO_JBOOLEAN perhaps.
I would also define the macro as: #define JNU_TO_JBOOLEAN(obj) (jboolean) ((obj) ? JNI_TRUE : JNI_FALSE) so that the type of the result is explicit. Unfortunately jni.h doesn't define JNI_TRUE or false with a cast to jboolean as they probably should. Mike On Mar 19 2014, at 11:36 , Sergey Bylokhov <[email protected]> wrote: > Thanks Anthony! > > Can somebody from the core-libs team take a look? > > On 3/17/14 10:31 PM, Anthony Petrov wrote: >> Personally, I'd call it to_jboolean(obj), but IS_TRUE(obj) sounds good to me >> too. Either way, I'm fine with the fix. >> >> -- >> best regards, >> Anthony >> >> On 3/17/2014 7:01 PM, Sergey Bylokhov wrote: >>> Hello. >>> This review request is for the new macro, which simplify conversion to >>> jboolean. It will be useful for fixing parfait warnings. >>> >>> We have a lot of places, where we cast some type to jboolean: >>> >>> BOOL = retVal; >>> return (jboolean) retVal; >>> >>> WARNING: Expecting value of JNI primitive type jboolean: mismatched >>> value retVal with size 32 bits, retVal used for conversion to int8 in return >>> >>> >>> +++ b/src/share/native/common/jni_util.h Mon Mar 17 18:28:48 2014 +0400 >>> @@ -277,6 +277,7 @@ >>> >>> #define IS_NULL(obj) ((obj) == NULL) >>> #define JNU_IsNull(env,obj) ((obj) == NULL) >>> +#define IS_TRUE(obj) ((obj) ? JNI_TRUE : JNI_FALSE) >>> >>> I am not sure about the name, probably someone have a better suggestion? >>> >>> The fix is for jdk9/dev. >>> >>> -- >>> Best regards, Sergey. >>> > > > -- > Best regards, Sergey. >
