2139 if (tp->_ptr == TypePtr::AnyNull) { 2140 tn->set_type(TypePtr::NULL_PTR); 2141 } 2142 break; 2143 } 2144 case Op_ConN: { // Convert narrow pointers above the centerline to NUL 2145 TypeNode *tn = n->as_Type(); // Constants derive from type nodes 2146 const TypePtr* tp = tn->type()->make_ptr(); 2147 if (tp && tp->_ptr == TypePtr::AnyNull) { 2148 tn->set_type(TypeNarrowOop::NULL_PTR); 2149 } 2150 break; 2151 } 2152 case Op_Binary: // These are introduced in the Post_Visit state. 2153 ShouldNotReachHere(); 2154 break; 2155 case Op_ClearArray: 2156 case Op_SafePoint: 2157 mem_op = true; 2158 break; 2159 default: 2160 if( n->is_Store() ) { 2161 // Do match stores, despite no ideal reg 2162 mem_op = true; 2163 break; 2164 } 2165 if( n->is_Mem() ) { // Loads and LoadStores 2166 mem_op = true; 2167 // Loads must be root of match tree due to prior load conflict 2168 if( C->subsume_loads() == false ) 2169 set_shared(n); 2170 } 2171 // Fall into default case 2172 if( !n->ideal_reg() ) 2173 set_dontcare(n); // Unmatchable Nodes 2174 } // end_switch 2175 2176 for(int i = n->req() - 1; i >= 0; --i) { // For my children 2177 Node *m = n->in(i); // Get ith input 2178 if (m == NULL) continue; // Ignore NULLs | 2139 if (tp->_ptr == TypePtr::AnyNull) { 2140 tn->set_type(TypePtr::NULL_PTR); 2141 } 2142 break; 2143 } 2144 case Op_ConN: { // Convert narrow pointers above the centerline to NUL 2145 TypeNode *tn = n->as_Type(); // Constants derive from type nodes 2146 const TypePtr* tp = tn->type()->make_ptr(); 2147 if (tp && tp->_ptr == TypePtr::AnyNull) { 2148 tn->set_type(TypeNarrowOop::NULL_PTR); 2149 } 2150 break; 2151 } 2152 case Op_Binary: // These are introduced in the Post_Visit state. 2153 ShouldNotReachHere(); 2154 break; 2155 case Op_ClearArray: 2156 case Op_SafePoint: 2157 mem_op = true; 2158 break; 2159 case Op_ShenandoahReadBarrier: 2160 case Op_ShenandoahWriteBarrier: 2161 mem_op = true; 2162 set_shared(n); 2163 break; 2164 default: 2165 if( n->is_Store() ) { 2166 // Do match stores, despite no ideal reg 2167 mem_op = true; 2168 break; 2169 } 2170 if( n->is_Mem() ) { // Loads and LoadStores 2171 mem_op = true; 2172 // Loads must be root of match tree due to prior load conflict 2173 if( C->subsume_loads() == false ) 2174 set_shared(n); 2175 } 2176 // Fall into default case 2177 if( !n->ideal_reg() ) 2178 set_dontcare(n); // Unmatchable Nodes 2179 } // end_switch 2180 2181 for(int i = n->req() - 1; i >= 0; --i) { // For my children 2182 Node *m = n->in(i); // Get ith input 2183 if (m == NULL) continue; // Ignore NULLs |