Request for review (S): 6833879 Assigning positive zero is ignored when old value is negative zero

Vladimir Kozlov Vladimir.Kozlov at Sun.COM
Wed Apr 29 11:28:03 PDT 2009


I would suggest to move the new checks after the original checks.

thanks,
Vladimir

Changpeng Fang wrote:
> http://cr.openjdk.java.net/~cfang/6833879/webrev.00/
> 
> Problem:
> For the following case:
> public static double normalize(float v) {
>        if (v == 0.0f) v = 0.0f;
>        return v;
> }
> If -0.0 is passed, 0.0 is expected to be returned (it is the case for 
> the interpreter). However,
> PhiNode::Identity optimized away the "if and assignment" statement and 
> the server vm
> return -0.0.
> 
> Proposed Solution:
> Don't perform this kind of identity optimization if either true path or 
> false path is constant
> 0.0 or (-0.0)
> 
> Open Issue:
> When the true path or false path is not constant, it may still be 0.0 
> (-0.0) at run time.
> Do we have to turn off this identity optimization completely  for float  
> and double (except
> for constant non-zeros)?
> Tests: Passed the test case in the CR report.
> 
> Thanks,
> 
> Changpeng



More information about the hotspot-compiler-dev mailing list