RFR: 8064811: Use THREAD instead of CHECK_NULL in return statements

Coleen Phillimore coleen.phillimore at oracle.com
Thu Nov 13 15:33:15 UTC 2014


The thing that I worry about with this change is that if someone adds 
code later after the return, they'll miss changing the THREAD parameter 
back into CHECK.  But maybe it's okay because the thing returned will be 
NULL and code is likely to crash on someone trying to use the value 
returned.  Ok.  This is a good cleanup.  I'm surprised there weren't more.

Thanks,
Coleen

On 11/13/14, 9:59 AM, Stefan Karlsson wrote:
> Hi all,
>
> Please, review this patch to replace usages of the CHECK_ macros in 
> return statements, with the THREAD define.
>
> http://cr.openjdk.java.net/~stefank/8064811/webrev.01/
> https://bugs.openjdk.java.net/browse/JDK-8064811
>
> From the bug report:
>
> Take the following method as an example:
>  Klass* ConstantPool::klass_ref_at(int which, TRAPS) {
>   return klass_at(klass_ref_index_at(which), CHECK_NULL);
>  }
>
> This will expand into:
>  Klass* ConstantPool::klass_ref_at(int which, TRAPS) {
>   return klass_at(klass_ref_index_at(which), THREAD);
>   if (HAS_PENDING_EXCEPTIONS) {
>     return NULL;
>   }
>   (void)(0);
>  }
>
> The if-statement will never be reached.
>
> We have seen cases where the compiler warns about this, and the recent 
> change to enable -Wreturn-type will make this more likely to happen.
>
> The suggested solution is to change the example above into:
>  Klass* ConstantPool::klass_ref_at(int which, TRAPS) {
>   return klass_at(klass_ref_index_at(which), THREAD);
>  }
>
> thanks,
> StefanK



More information about the hotspot-dev mailing list