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 |