Request for review (S): 6833879 Assigning positive zero is ignored when old value is negative zero
Changpeng Fang
Changpeng.Fang at Sun.COM
Wed Apr 29 10:59:41 PDT 2009
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