hotspot/src/share/vm/opto/connode.cpp
changeset 13728 882756847a04
parent 11959 0bf55e106849
child 13886 8d82c4dfa722
equal deleted inserted replaced
13727:caf5eb7dd4a7 13728:882756847a04
    48   case T_INT:       return new (C, 1) ConINode( t->is_int() );
    48   case T_INT:       return new (C, 1) ConINode( t->is_int() );
    49   case T_LONG:      return new (C, 1) ConLNode( t->is_long() );
    49   case T_LONG:      return new (C, 1) ConLNode( t->is_long() );
    50   case T_FLOAT:     return new (C, 1) ConFNode( t->is_float_constant() );
    50   case T_FLOAT:     return new (C, 1) ConFNode( t->is_float_constant() );
    51   case T_DOUBLE:    return new (C, 1) ConDNode( t->is_double_constant() );
    51   case T_DOUBLE:    return new (C, 1) ConDNode( t->is_double_constant() );
    52   case T_VOID:      return new (C, 1) ConNode ( Type::TOP );
    52   case T_VOID:      return new (C, 1) ConNode ( Type::TOP );
    53   case T_OBJECT:    return new (C, 1) ConPNode( t->is_oopptr() );
    53   case T_OBJECT:    return new (C, 1) ConPNode( t->is_ptr() );
    54   case T_ARRAY:     return new (C, 1) ConPNode( t->is_aryptr() );
    54   case T_ARRAY:     return new (C, 1) ConPNode( t->is_aryptr() );
    55   case T_ADDRESS:   return new (C, 1) ConPNode( t->is_ptr() );
    55   case T_ADDRESS:   return new (C, 1) ConPNode( t->is_ptr() );
    56   case T_NARROWOOP: return new (C, 1) ConNNode( t->is_narrowoop() );
    56   case T_NARROWOOP: return new (C, 1) ConNNode( t->is_narrowoop() );
       
    57   case T_METADATA:  return new (C, 1) ConPNode( t->is_ptr() );
    57     // Expected cases:  TypePtr::NULL_PTR, any is_rawptr()
    58     // Expected cases:  TypePtr::NULL_PTR, any is_rawptr()
    58     // Also seen: AnyPtr(TopPTR *+top); from command line:
    59     // Also seen: AnyPtr(TopPTR *+top); from command line:
    59     //   r -XX:+PrintOpto -XX:CIStart=285 -XX:+CompileTheWorld -XX:CompileTheWorldStartAt=660
    60     //   r -XX:+PrintOpto -XX:CIStart=285 -XX:+CompileTheWorld -XX:CompileTheWorldStartAt=660
    60     // %%%% Stop using TypePtr::NULL_PTR to represent nulls:  use either TypeRawPtr::NULL_PTR
    61     // %%%% Stop using TypePtr::NULL_PTR to represent nulls:  use either TypeRawPtr::NULL_PTR
    61     // or else TypeOopPtr::NULL_PTR.  Then set Type::_basic_type[AnyPtr] = T_ILLEGAL
    62     // or else TypeOopPtr::NULL_PTR.  Then set Type::_basic_type[AnyPtr] = T_ILLEGAL
   524   // const TypeInstPtr *in_oop = in->isa_instptr();
   525   // const TypeInstPtr *in_oop = in->isa_instptr();
   525   // const TypeInstPtr *my_oop = _type->isa_instptr();
   526   // const TypeInstPtr *my_oop = _type->isa_instptr();
   526   // // If either input is an 'interface', return destination type
   527   // // If either input is an 'interface', return destination type
   527   // assert (in_oop == NULL || in_oop->klass() != NULL, "");
   528   // assert (in_oop == NULL || in_oop->klass() != NULL, "");
   528   // assert (my_oop == NULL || my_oop->klass() != NULL, "");
   529   // assert (my_oop == NULL || my_oop->klass() != NULL, "");
   529   // if( (in_oop && in_oop->klass()->klass_part()->is_interface())
   530   // if( (in_oop && in_oop->klass()->is_interface())
   530   //   ||(my_oop && my_oop->klass()->klass_part()->is_interface()) ) {
   531   //   ||(my_oop && my_oop->klass()->is_interface()) ) {
   531   //   TypePtr::PTR  in_ptr = in->isa_ptr() ? in->is_ptr()->_ptr : TypePtr::BotPTR;
   532   //   TypePtr::PTR  in_ptr = in->isa_ptr() ? in->is_ptr()->_ptr : TypePtr::BotPTR;
   532   //   // Preserve cast away nullness for interfaces
   533   //   // Preserve cast away nullness for interfaces
   533   //   if( in_ptr == TypePtr::NotNull && my_oop && my_oop->_ptr == TypePtr::BotPTR ) {
   534   //   if( in_ptr == TypePtr::NotNull && my_oop && my_oop->_ptr == TypePtr::BotPTR ) {
   534   //     return my_oop->cast_to_ptr_type(TypePtr::NotNull);
   535   //     return my_oop->cast_to_ptr_type(TypePtr::NotNull);
   535   //   }
   536   //   }
   602 const Type *EncodePNode::Value( PhaseTransform *phase ) const {
   603 const Type *EncodePNode::Value( PhaseTransform *phase ) const {
   603   const Type *t = phase->type( in(1) );
   604   const Type *t = phase->type( in(1) );
   604   if (t == Type::TOP) return Type::TOP;
   605   if (t == Type::TOP) return Type::TOP;
   605   if (t == TypePtr::NULL_PTR) return TypeNarrowOop::NULL_PTR;
   606   if (t == TypePtr::NULL_PTR) return TypeNarrowOop::NULL_PTR;
   606 
   607 
   607   assert(t->isa_oopptr(), "only oopptr here");
   608   assert(t->isa_oop_ptr() || UseCompressedKlassPointers && t->isa_klassptr(), "only oopptr here");
   608   return t->make_narrowoop();
   609   return t->make_narrowoop();
   609 }
   610 }
   610 
   611 
   611 
   612 
   612 Node *EncodePNode::Ideal_DU_postCCP( PhaseCCP *ccp ) {
   613 Node *EncodePNode::Ideal_DU_postCCP( PhaseCCP *ccp ) {