src/share/vm/opto/matcher.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6827605 Sdiff src/share/vm/opto

src/share/vm/opto/matcher.cpp

Print this page




2015         n->del_req(LoadStoreNode::ExpectedIn);
2016         break;
2017       }
2018       case Op_CMoveD:              // Convert trinary to binary-tree
2019       case Op_CMoveF:
2020       case Op_CMoveI:
2021       case Op_CMoveL:
2022       case Op_CMoveN:
2023       case Op_CMoveP: {
2024         // Restructure into a binary tree for Matching.  It's possible that
2025         // we could move this code up next to the graph reshaping for IfNodes
2026         // or vice-versa, but I do not want to debug this for Ladybird.
2027         // 10/2/2000 CNC.
2028         Node *pair1 = new (C, 3) BinaryNode(n->in(1),n->in(1)->in(1));
2029         n->set_req(1,pair1);
2030         Node *pair2 = new (C, 3) BinaryNode(n->in(2),n->in(3));
2031         n->set_req(2,pair2);
2032         n->del_req(3);
2033         break;
2034       }

















2035       default:
2036         break;
2037       }
2038     }
2039     else {
2040       ShouldNotReachHere();
2041     }
2042   } // end of while (mstack.is_nonempty())
2043 }
2044 
2045 #ifdef ASSERT
2046 // machine-independent root to machine-dependent root
2047 void Matcher::dump_old2new_map() {
2048   _old2new_map.dump();
2049 }
2050 #endif
2051 
2052 //---------------------------collect_null_checks-------------------------------
2053 // Find null checks in the ideal graph; write a machine-specific node for
2054 // it.  Used by later implicit-null-check handling.  Actually collects




2015         n->del_req(LoadStoreNode::ExpectedIn);
2016         break;
2017       }
2018       case Op_CMoveD:              // Convert trinary to binary-tree
2019       case Op_CMoveF:
2020       case Op_CMoveI:
2021       case Op_CMoveL:
2022       case Op_CMoveN:
2023       case Op_CMoveP: {
2024         // Restructure into a binary tree for Matching.  It's possible that
2025         // we could move this code up next to the graph reshaping for IfNodes
2026         // or vice-versa, but I do not want to debug this for Ladybird.
2027         // 10/2/2000 CNC.
2028         Node *pair1 = new (C, 3) BinaryNode(n->in(1),n->in(1)->in(1));
2029         n->set_req(1,pair1);
2030         Node *pair2 = new (C, 3) BinaryNode(n->in(2),n->in(3));
2031         n->set_req(2,pair2);
2032         n->del_req(3);
2033         break;
2034       }
2035       case Op_StrEquals: {
2036         Node *pair1 = new (C, 3) BinaryNode(n->in(2),n->in(3));
2037         n->set_req(2,pair1);
2038         n->set_req(3,n->in(4));
2039         n->del_req(4);
2040         break;
2041       }
2042       case Op_StrComp:
2043       case Op_StrIndexOf: {
2044         Node *pair1 = new (C, 3) BinaryNode(n->in(2),n->in(3));
2045         n->set_req(2,pair1);
2046         Node *pair2 = new (C, 3) BinaryNode(n->in(4),n->in(5));
2047         n->set_req(3,pair2);
2048         n->del_req(5);
2049         n->del_req(4);
2050         break;
2051       }
2052       default:
2053         break;
2054       }
2055     }
2056     else {
2057       ShouldNotReachHere();
2058     }
2059   } // end of while (mstack.is_nonempty())
2060 }
2061 
2062 #ifdef ASSERT
2063 // machine-independent root to machine-dependent root
2064 void Matcher::dump_old2new_map() {
2065   _old2new_map.dump();
2066 }
2067 #endif
2068 
2069 //---------------------------collect_null_checks-------------------------------
2070 // Find null checks in the ideal graph; write a machine-specific node for
2071 // it.  Used by later implicit-null-check handling.  Actually collects


src/share/vm/opto/matcher.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File