2512 } |
2512 } |
2513 |
2513 |
2514 //============================================================================= |
2514 //============================================================================= |
2515 // Do we match on this edge? No memory edges |
2515 // Do we match on this edge? No memory edges |
2516 uint StrCompNode::match_edge(uint idx) const { |
2516 uint StrCompNode::match_edge(uint idx) const { |
2517 return idx == 5 || idx == 6; |
2517 return idx == 2 || idx == 3; // StrComp (Binary str1 cnt1) (Binary str2 cnt2) |
2518 } |
2518 } |
2519 |
2519 |
2520 //------------------------------Ideal------------------------------------------ |
2520 //------------------------------Ideal------------------------------------------ |
2521 // Return a node which is more "ideal" than the current node. Strip out |
2521 // Return a node which is more "ideal" than the current node. Strip out |
2522 // control copies |
2522 // control copies |
2523 Node *StrCompNode::Ideal(PhaseGVN *phase, bool can_reshape){ |
2523 Node *StrCompNode::Ideal(PhaseGVN *phase, bool can_reshape){ |
2524 return remove_dead_region(phase, can_reshape) ? this : NULL; |
2524 return remove_dead_region(phase, can_reshape) ? this : NULL; |
2525 } |
2525 } |
2526 |
2526 |
|
2527 //============================================================================= |
2527 // Do we match on this edge? No memory edges |
2528 // Do we match on this edge? No memory edges |
2528 uint StrEqualsNode::match_edge(uint idx) const { |
2529 uint StrEqualsNode::match_edge(uint idx) const { |
2529 return idx == 5 || idx == 6; |
2530 return idx == 2 || idx == 3; // StrEquals (Binary str1 str2) cnt |
2530 } |
2531 } |
2531 |
2532 |
2532 //------------------------------Ideal------------------------------------------ |
2533 //------------------------------Ideal------------------------------------------ |
2533 // Return a node which is more "ideal" than the current node. Strip out |
2534 // Return a node which is more "ideal" than the current node. Strip out |
2534 // control copies |
2535 // control copies |
2537 } |
2538 } |
2538 |
2539 |
2539 //============================================================================= |
2540 //============================================================================= |
2540 // Do we match on this edge? No memory edges |
2541 // Do we match on this edge? No memory edges |
2541 uint StrIndexOfNode::match_edge(uint idx) const { |
2542 uint StrIndexOfNode::match_edge(uint idx) const { |
2542 return idx == 5 || idx == 6; |
2543 return idx == 2 || idx == 3; // StrIndexOf (Binary str1 cnt1) (Binary str2 cnt2) |
2543 } |
2544 } |
2544 |
2545 |
2545 //------------------------------Ideal------------------------------------------ |
2546 //------------------------------Ideal------------------------------------------ |
2546 // Return a node which is more "ideal" than the current node. Strip out |
2547 // Return a node which is more "ideal" than the current node. Strip out |
2547 // control copies |
2548 // control copies |
2548 Node *StrIndexOfNode::Ideal(PhaseGVN *phase, bool can_reshape){ |
2549 Node *StrIndexOfNode::Ideal(PhaseGVN *phase, bool can_reshape){ |
2549 return remove_dead_region(phase, can_reshape) ? this : NULL; |
2550 return remove_dead_region(phase, can_reshape) ? this : NULL; |
2550 } |
2551 } |
2551 |
2552 |
|
2553 //============================================================================= |
|
2554 // Do we match on this edge? No memory edges |
|
2555 uint AryEqNode::match_edge(uint idx) const { |
|
2556 return idx == 2 || idx == 3; // StrEquals ary1 ary2 |
|
2557 } |
2552 //------------------------------Ideal------------------------------------------ |
2558 //------------------------------Ideal------------------------------------------ |
2553 // Return a node which is more "ideal" than the current node. Strip out |
2559 // Return a node which is more "ideal" than the current node. Strip out |
2554 // control copies |
2560 // control copies |
2555 Node *AryEqNode::Ideal(PhaseGVN *phase, bool can_reshape){ |
2561 Node *AryEqNode::Ideal(PhaseGVN *phase, bool can_reshape){ |
2556 return remove_dead_region(phase, can_reshape) ? this : NULL; |
2562 return remove_dead_region(phase, can_reshape) ? this : NULL; |