568 static const TypeTuple *make_range(ciSignature *sig);
569 static const TypeTuple *make_domain(ciInstanceKlass* recv, ciSignature *sig);
570
571 // Subroutine call type with space allocated for argument types
572 static const Type **fields( uint arg_cnt );
573
574 virtual const Type *xmeet( const Type *t ) const;
575 virtual const Type *xdual() const; // Compute dual right now.
576 // Convenience common pre-built types.
577 static const TypeTuple *IFBOTH;
578 static const TypeTuple *IFFALSE;
579 static const TypeTuple *IFTRUE;
580 static const TypeTuple *IFNEITHER;
581 static const TypeTuple *LOOPBODY;
582 static const TypeTuple *MEMBAR;
583 static const TypeTuple *STORECONDITIONAL;
584 static const TypeTuple *START_I2C;
585 static const TypeTuple *INT_PAIR;
586 static const TypeTuple *LONG_PAIR;
587 static const TypeTuple *INT_CC_PAIR;
588 #ifndef PRODUCT
589 virtual void dump2( Dict &d, uint, outputStream *st ) const; // Specialized per-Type dumping
590 #endif
591 };
592
593 //------------------------------TypeAry----------------------------------------
594 // Class of Array Types
595 class TypeAry : public Type {
596 TypeAry(const Type* elem, const TypeInt* size, bool stable) : Type(Array),
597 _elem(elem), _size(size), _stable(stable) {}
598 public:
599 virtual bool eq( const Type *t ) const;
600 virtual int hash() const; // Type specific hashing
601 virtual bool singleton(void) const; // TRUE if type is a singleton
602 virtual bool empty(void) const; // TRUE if type is vacuous
603
604 private:
605 const Type *_elem; // Element type of array
606 const TypeInt *_size; // Elements in array
607 const bool _stable; // Are elements @Stable?
|
568 static const TypeTuple *make_range(ciSignature *sig);
569 static const TypeTuple *make_domain(ciInstanceKlass* recv, ciSignature *sig);
570
571 // Subroutine call type with space allocated for argument types
572 static const Type **fields( uint arg_cnt );
573
574 virtual const Type *xmeet( const Type *t ) const;
575 virtual const Type *xdual() const; // Compute dual right now.
576 // Convenience common pre-built types.
577 static const TypeTuple *IFBOTH;
578 static const TypeTuple *IFFALSE;
579 static const TypeTuple *IFTRUE;
580 static const TypeTuple *IFNEITHER;
581 static const TypeTuple *LOOPBODY;
582 static const TypeTuple *MEMBAR;
583 static const TypeTuple *STORECONDITIONAL;
584 static const TypeTuple *START_I2C;
585 static const TypeTuple *INT_PAIR;
586 static const TypeTuple *LONG_PAIR;
587 static const TypeTuple *INT_CC_PAIR;
588 static const TypeTuple *LONG_CC_PAIR;
589 #ifndef PRODUCT
590 virtual void dump2( Dict &d, uint, outputStream *st ) const; // Specialized per-Type dumping
591 #endif
592 };
593
594 //------------------------------TypeAry----------------------------------------
595 // Class of Array Types
596 class TypeAry : public Type {
597 TypeAry(const Type* elem, const TypeInt* size, bool stable) : Type(Array),
598 _elem(elem), _size(size), _stable(stable) {}
599 public:
600 virtual bool eq( const Type *t ) const;
601 virtual int hash() const; // Type specific hashing
602 virtual bool singleton(void) const; // TRUE if type is a singleton
603 virtual bool empty(void) const; // TRUE if type is vacuous
604
605 private:
606 const Type *_elem; // Element type of array
607 const TypeInt *_size; // Elements in array
608 const bool _stable; // Are elements @Stable?
|