< prev index next >

src/share/vm/opto/matcher.cpp

Print this page




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


< prev index next >