6885584 (original) (raw)
Code Review for 6885584
Prepared by: | never on Wed Oct 7 09:47:32 PDT 2009 |
---|---|
Workspace: | /net/smite.sfbay/export/ws/baseline |
Compare against: | ssh://hg.openjdk.java.net/jdk7/hotspot-comp-gate/hotspot |
Summary of changes: | 86 lines changed: 71 ins; 0 del; 15 mod; 7044 unchg |
Patch of changes: | <6885584.patch> |
Author comments: | In the fix for 6467870 logic was added to keep CCP from marchingthrough all the values in a type range when moving the boundaries. Itwould saturate a range to it's limit instead of expanding it one at atime but then it would filter the resulting type through the worstcase type. If the side of the range chosen to saturate was already atit's limit and the other side was moving then this would end upreverting the type to the original limits which started a death march.In the failing case we have the range int:199999999..200000000 withthe limit_type int:0..200000000. The code in widen will chose to move_hi to max_jint but then filtering the type through the limit puts _hiback to 200000000 returning the original type. The transforms areactually moving _lo so the next time around it's 199999998 and so on.The problem is that widen doesn't know what the true limit is so itthinks it's making progress but it's not. The fix I'm proposing is tofeed the limit type into widen so that it can use that as the boundsinstead of assuming max_jint/min_jint.Tested with test case. |
Legend: | Modified file Deleted file New file |
[Cdiffs](src/share/vm/opto/type.hpp.cdiff.html) [Udiffs](src/share/vm/opto/type.hpp.udiff.html) [Sdiffs](src/share/vm/opto/type.hpp.sdiff.html) [Frames](src/share/vm/opto/type.hpp.frames.html) [Old](src/share/vm/opto/type.hpp-.html) [New](src/share/vm/opto/type.hpp.html) [Patch](src/share/vm/opto/type.hpp.patch) [Raw](raw%5Ffiles/new/src/share/vm/opto/type.hpp)
src/share/vm/opto/type.hpp
3 lines changed: 0 ins; 0 del; 3 mod; 1271 unchg
[Cdiffs](src/share/vm/opto/type.cpp.cdiff.html) [Udiffs](src/share/vm/opto/type.cpp.udiff.html) [Sdiffs](src/share/vm/opto/type.cpp.sdiff.html) [Frames](src/share/vm/opto/type.cpp.frames.html) [Old](src/share/vm/opto/type.cpp-.html) [New](src/share/vm/opto/type.cpp.html) [Patch](src/share/vm/opto/type.cpp.patch) [Raw](raw%5Ffiles/new/src/share/vm/opto/type.cpp)
src/share/vm/opto/type.cpp
23 lines changed: 12 ins; 0 del; 11 mod; 4076 unchg
[Cdiffs](src/share/vm/opto/phaseX.cpp.cdiff.html) [Udiffs](src/share/vm/opto/phaseX.cpp.udiff.html) [Sdiffs](src/share/vm/opto/phaseX.cpp.sdiff.html) [Frames](src/share/vm/opto/phaseX.cpp.frames.html) [Old](src/share/vm/opto/phaseX.cpp-.html) [New](src/share/vm/opto/phaseX.cpp.html) [Patch](src/share/vm/opto/phaseX.cpp.patch) [Raw](raw%5Ffiles/new/src/share/vm/opto/phaseX.cpp)
src/share/vm/opto/phaseX.cpp
1 line changed: 0 ins; 0 del; 1 mod; 1697 unchg
------ ------ ------ ------ ---[New](test/compiler/6885584/Test6885584.java.html) [Patch](test/compiler/6885584/Test6885584.java.patch) [Raw](raw%5Ffiles/new/test/compiler/6885584/Test6885584.java)
test/compiler/6885584/Test6885584.java
59 lines changed: 59 ins; 0 del; 0 mod; 0 unchg
This code review page was prepared using /never/bin/webrev(vers 23.18-hg-never).