comparison src/share/vm/opto/connode.cpp @ 6725:da91efe96a93

6964458: Reimplement class meta-data storage to use native memory Summary: Remove PermGen, allocate meta-data in metaspace linked to class loaders, rewrite GC walking, rewrite and rename metadata to be C++ classes Reviewed-by: jmasa, stefank, never, coleenp, kvn, brutisso, mgerdin, dholmes, jrose, twisti, roland Contributed-by: jmasa <jon.masamitsu@oracle.com>, stefank <stefan.karlsson@oracle.com>, mgerdin <mikael.gerdin@oracle.com>, never <tom.rodriguez@oracle.com>
author coleenp
date Sat, 01 Sep 2012 13:25:18 -0400
parents 9a72c7ece7fb
children 7eca5de9e0b6
comparison
equal deleted inserted replaced
6724:36d1d483d5d6 6725:da91efe96a93
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 ) {