895 ) { |
895 ) { |
896 m = m->clone(); |
896 m = m->clone(); |
897 #ifdef ASSERT |
897 #ifdef ASSERT |
898 _new2old_map.map(m->_idx, n); |
898 _new2old_map.map(m->_idx, n); |
899 #endif |
899 #endif |
900 mstack.push(m, Post_Visit, n, i); // Don't neet to visit |
900 mstack.push(m, Post_Visit, n, i); // Don't need to visit |
901 mstack.push(m->in(0), Visit, m, 0); |
901 mstack.push(m->in(0), Visit, m, 0); |
902 } else { |
902 } else { |
903 mstack.push(m, Visit, n, i); |
903 mstack.push(m, Visit, n, i); |
904 } |
904 } |
905 } |
905 } |
1540 int op = _leftOp[rule]; |
1540 int op = _leftOp[rule]; |
1541 // Operand type to catch childs result |
1541 // Operand type to catch childs result |
1542 // This is what my child will give me. |
1542 // This is what my child will give me. |
1543 int opnd_class_instance = s->_rule[op]; |
1543 int opnd_class_instance = s->_rule[op]; |
1544 // Choose between operand class or not. |
1544 // Choose between operand class or not. |
1545 // This is what I will recieve. |
1545 // This is what I will receive. |
1546 int catch_op = (FIRST_OPERAND_CLASS <= op && op < NUM_OPERANDS) ? opnd_class_instance : op; |
1546 int catch_op = (FIRST_OPERAND_CLASS <= op && op < NUM_OPERANDS) ? opnd_class_instance : op; |
1547 // New rule for child. Chase operand classes to get the actual rule. |
1547 // New rule for child. Chase operand classes to get the actual rule. |
1548 int newrule = s->_rule[catch_op]; |
1548 int newrule = s->_rule[catch_op]; |
1549 |
1549 |
1550 if( newrule < NUM_OPERANDS ) { |
1550 if( newrule < NUM_OPERANDS ) { |
1964 // This leaves both the Bool and the If pointing at the Cmp. To |
1964 // This leaves both the Bool and the If pointing at the Cmp. To |
1965 // prevent the Matcher from trying to Match the Cmp along both paths |
1965 // prevent the Matcher from trying to Match the Cmp along both paths |
1966 // BoolNode::match_edge always returns a zero. |
1966 // BoolNode::match_edge always returns a zero. |
1967 |
1967 |
1968 // We reorder the Op_If in a pre-order manner, so we can visit without |
1968 // We reorder the Op_If in a pre-order manner, so we can visit without |
1969 // accidently sharing the Cmp (the Bool and the If make 2 users). |
1969 // accidentally sharing the Cmp (the Bool and the If make 2 users). |
1970 n->add_req( n->in(1)->in(1) ); // Add the Cmp next to the Bool |
1970 n->add_req( n->in(1)->in(1) ); // Add the Cmp next to the Bool |
1971 } |
1971 } |
1972 else if (nstate == Post_Visit) { |
1972 else if (nstate == Post_Visit) { |
1973 mstack.pop(); // Remove node from stack |
1973 mstack.pop(); // Remove node from stack |
1974 |
1974 |