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 <sergey.bylok...@oracle.com> 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.
> 

Reply via email to