676
677 public:
678 virtual bool eq( const Type *t ) const;
679 virtual int hash() const; // Type specific hashing
680 virtual bool singleton(void) const; // TRUE if type is a singleton
681 virtual bool empty(void) const; // TRUE if type is vacuous
682
683 // Accessors:
684 uint cnt() const { return _cnt; }
685 const Type* field_at(uint i) const {
686 assert(i < _cnt, "oob");
687 return _fields[i];
688 }
689 void set_field_at(uint i, const Type* t) {
690 assert(i < _cnt, "oob");
691 _fields[i] = t;
692 }
693
694 static const TypeTuple *make( uint cnt, const Type **fields );
695 static const TypeTuple *make_range(ciSignature *sig, bool ret_vt_fields = false);
696 static const TypeTuple *make_domain(ciInstanceKlass* recv, ciSignature *sig, bool vt_fields_as_args = false);
697
698 // Subroutine call type with space allocated for argument types
699 // Memory for Control, I_O, Memory, FramePtr, and ReturnAdr is allocated implicitly
700 static const Type **fields( uint arg_cnt );
701
702 virtual const Type *xmeet( const Type *t ) const;
703 virtual const Type *xdual() const; // Compute dual right now.
704 // Convenience common pre-built types.
705 static const TypeTuple *IFBOTH;
706 static const TypeTuple *IFFALSE;
707 static const TypeTuple *IFTRUE;
708 static const TypeTuple *IFNEITHER;
709 static const TypeTuple *LOOPBODY;
710 static const TypeTuple *MEMBAR;
711 static const TypeTuple *STORECONDITIONAL;
712 static const TypeTuple *START_I2C;
713 static const TypeTuple *INT_PAIR;
714 static const TypeTuple *LONG_PAIR;
715 static const TypeTuple *INT_CC_PAIR;
|
676
677 public:
678 virtual bool eq( const Type *t ) const;
679 virtual int hash() const; // Type specific hashing
680 virtual bool singleton(void) const; // TRUE if type is a singleton
681 virtual bool empty(void) const; // TRUE if type is vacuous
682
683 // Accessors:
684 uint cnt() const { return _cnt; }
685 const Type* field_at(uint i) const {
686 assert(i < _cnt, "oob");
687 return _fields[i];
688 }
689 void set_field_at(uint i, const Type* t) {
690 assert(i < _cnt, "oob");
691 _fields[i] = t;
692 }
693
694 static const TypeTuple *make( uint cnt, const Type **fields );
695 static const TypeTuple *make_range(ciSignature *sig, bool ret_vt_fields = false);
696 static const TypeTuple *make_range(ciType *ret_type, bool ret_vt_fields = false);
697 static const TypeTuple *make_domain(ciInstanceKlass* recv, ciSignature *sig, bool vt_fields_as_args = false);
698
699 // Subroutine call type with space allocated for argument types
700 // Memory for Control, I_O, Memory, FramePtr, and ReturnAdr is allocated implicitly
701 static const Type **fields( uint arg_cnt );
702
703 virtual const Type *xmeet( const Type *t ) const;
704 virtual const Type *xdual() const; // Compute dual right now.
705 // Convenience common pre-built types.
706 static const TypeTuple *IFBOTH;
707 static const TypeTuple *IFFALSE;
708 static const TypeTuple *IFTRUE;
709 static const TypeTuple *IFNEITHER;
710 static const TypeTuple *LOOPBODY;
711 static const TypeTuple *MEMBAR;
712 static const TypeTuple *STORECONDITIONAL;
713 static const TypeTuple *START_I2C;
714 static const TypeTuple *INT_PAIR;
715 static const TypeTuple *LONG_PAIR;
716 static const TypeTuple *INT_CC_PAIR;
|