Request for reviews (XS): 6866651: Regression: simple int sum crashes jvm (build 1.6.0_14-b08 and 1.7.0-ea-b59)
changpeng fang - Sun Microsystems - Santa Clara United States
Changpeng.Fang at Sun.COM
Fri Aug 14 14:50:25 PDT 2009
http://cr.openjdk.java.net/~cfang/6866651/webrev.00/
Fixed 6866651: Regression: simple int sum crashes jvm (build
1.6.0_14-b08 and 1.7.0-ea-b59)
Problem:
set_req_X will do dead code elimination if the original input has no
other use. However, it is possible to
have the current node (this) removed if a dead loop exists. So, dead
code elimination in set_req_X is not
safe, and may cause undesired consequences (like the segfault in 6866651)
Solution:
Instead of doing dead code elimination immediately in set_req_X, we put
the dead node (original input) into
the worklist, and the dead node will eventually be eliminated when it is
its turn to be processed.
In addition, before ideal transformations, we replace a node with a
constant if we know it computes a constant
to skip unneeded optimizations on this node.
Tests: JPRT, CompileTheWorld, Test case in bug report (Test.java in webrev)
Thanks,
Changpeng
More information about the hotspot-compiler-dev
mailing list