Request for reviews (M): 7070134: Hotspot crashes with sigsegv from PorterStemmer
vladimir.kozlov at oracle.com
Tue Jul 26 13:09:26 PDT 2011
Fixed 7070134: Hotspot crashes with sigsegv from PorterStemmer
It is an other case of "6831314: C2 may incorrectly change control of type
nodes". Loop predicate RCE upper_bound check matches an other dominating
RangeCheck and split_if optimization moves loads to dominating test. In the bug
case (step4() method) two code branches have the same loads from the same array
(b) and they are combined and moved above array's index check and above
lower_bound predicate check.
The fix is band-aid to not move data nodes which are attached to a predicate
test to a dominating test. It is allowed to do that during loop peeling and loop
predicates generation since they duplicate all checks. I also switched off
predicate RCE optimization for counted loops with '!=' test since there is no
guarantee that loop index will be in the range [init, limit) if init > limit.
Added regression test. Refwokload (x64) shows no affect.
More information about the hotspot-compiler-dev