RFR (S): 8211394: CHECK_ must be used in the rhs of an assignment statement within a block

David Holmes david.holmes at oracle.com
Mon Oct 8 21:15:42 UTC 2018


Thanks Lois.

David

On 8/10/2018 9:41 PM, Lois Foltan wrote:
> Looks good David.
> Lois
> 
> On 10/7/2018 6:08 PM, David Holmes wrote:
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8211394
>> webrev: http://cr.openjdk.java.net/~dholmes/8211394/webrev/
>>
>> If a CHECK_ macro is used on a function call that is part of a return 
>> statement i.e.
>>
>> return foo(CHECK_NULL);
>>
>> then it expands into an unreachable if-statement that checks the 
>> exception state:
>>
>> return foo();
>> if (EXCEPTION_OCCURRED)
>>   return NULL;
>>
>> This is obviously a programming error, but unfortunately not something 
>> our often pedantic compilers complain about.
>>
>> There are two ways to fix:
>>
>> 1. Convert to assignment:
>>
>> T* t = foo(CHECK_NULL);
>> return t;
>>
>> 2. If the method is local and its exception behaviour easily 
>> discernible and matches the expected behaviour, then change CHECK_ to 
>> THREAD
>>
>> return foo(THREAD);
>>
>> Both fixes are applied as appropriate. As per the bug report I also 
>> revisited an earlier fix in this area - JDK-8062808 - and made 
>> adjustments.
>>
>> Thanks,
>> David
> 


More information about the hotspot-runtime-dev mailing list