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 ) { |