--- old/src/share/vm/opto/memnode.cpp Thu Sep 10 12:15:11 2009 +++ new/src/share/vm/opto/memnode.cpp Thu Sep 10 12:15:11 2009 @@ -2498,7 +2498,7 @@ //============================================================================= // Do we match on this edge? No memory edges uint StrCompNode::match_edge(uint idx) const { - return idx == 5 || idx == 6; + return idx == 2 || idx == 3; // StrComp (Binary str1 cnt1) (Binary str2 cnt2) } //------------------------------Ideal------------------------------------------ @@ -2508,9 +2508,10 @@ return remove_dead_region(phase, can_reshape) ? this : NULL; } +//============================================================================= // Do we match on this edge? No memory edges uint StrEqualsNode::match_edge(uint idx) const { - return idx == 5 || idx == 6; + return idx == 2 || idx == 3; // StrEquals (Binary str1 str2) cnt } //------------------------------Ideal------------------------------------------ @@ -2523,7 +2524,7 @@ //============================================================================= // Do we match on this edge? No memory edges uint StrIndexOfNode::match_edge(uint idx) const { - return idx == 5 || idx == 6; + return idx == 2 || idx == 3; // StrIndexOf (Binary str1 cnt1) (Binary str2 cnt2) } //------------------------------Ideal------------------------------------------ @@ -2533,6 +2534,11 @@ return remove_dead_region(phase, can_reshape) ? this : NULL; } +//============================================================================= +// Do we match on this edge? No memory edges +uint AryEqNode::match_edge(uint idx) const { + return idx == 2 || idx == 3; // StrEquals ary1 ary2 +} //------------------------------Ideal------------------------------------------ // Return a node which is more "ideal" than the current node. Strip out // control copies