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