< prev index next >

src/hotspot/share/opto/type.hpp

Print this page

 787   const Type*   _elem;  // Vector's element type
 788   const uint  _length;  // Elements in vector (power of 2)
 789 
 790 protected:
 791   TypeVect(TYPES t, const Type* elem, uint length) : Type(t),
 792     _elem(elem), _length(length) {}
 793 
 794 public:
 795   const Type* element_type() const { return _elem; }
 796   BasicType element_basic_type() const { return _elem->array_element_basic_type(); }
 797   uint length() const { return _length; }
 798   uint length_in_bytes() const {
 799    return _length * type2aelembytes(element_basic_type());
 800   }
 801 
 802   virtual bool eq(const Type *t) const;
 803   virtual int  hash() const;             // Type specific hashing
 804   virtual bool singleton(void) const;    // TRUE if type is a singleton
 805   virtual bool empty(void) const;        // TRUE if type is vacuous
 806 
 807   static const TypeVect *make(const BasicType elem_bt, uint length) {
 808     // Use bottom primitive type.
 809     return make(get_const_basic_type(elem_bt), length);
 810   }
 811   // Used directly by Replicate nodes to construct singleton vector.
 812   static const TypeVect *make(const Type* elem, uint length);
 813 
 814   static const TypeVect *makemask(const BasicType elem_bt, uint length) {
 815     // Use bottom primitive type.
 816     return makemask(get_const_basic_type(elem_bt), length);
 817   }
 818   static const TypeVect *makemask(const Type* elem, uint length);
 819 
 820 
 821   virtual const Type *xmeet( const Type *t) const;
 822   virtual const Type *xdual() const;     // Compute dual right now.
 823 
 824   static const TypeVect *VECTA;
 825   static const TypeVect *VECTS;
 826   static const TypeVect *VECTD;
 827   static const TypeVect *VECTX;
 828   static const TypeVect *VECTY;
 829   static const TypeVect *VECTZ;
 830   static const TypeVect *VECTMASK;
 831 
 832 #ifndef PRODUCT

 787   const Type*   _elem;  // Vector's element type
 788   const uint  _length;  // Elements in vector (power of 2)
 789 
 790 protected:
 791   TypeVect(TYPES t, const Type* elem, uint length) : Type(t),
 792     _elem(elem), _length(length) {}
 793 
 794 public:
 795   const Type* element_type() const { return _elem; }
 796   BasicType element_basic_type() const { return _elem->array_element_basic_type(); }
 797   uint length() const { return _length; }
 798   uint length_in_bytes() const {
 799    return _length * type2aelembytes(element_basic_type());
 800   }
 801 
 802   virtual bool eq(const Type *t) const;
 803   virtual int  hash() const;             // Type specific hashing
 804   virtual bool singleton(void) const;    // TRUE if type is a singleton
 805   virtual bool empty(void) const;        // TRUE if type is vacuous
 806 
 807   static const TypeVect *make(const BasicType elem_bt, uint length, bool is_mask = false) {
 808     // Use bottom primitive type.
 809     return make(get_const_basic_type(elem_bt), length, is_mask);
 810   }
 811   // Used directly by Replicate nodes to construct singleton vector.
 812   static const TypeVect *make(const Type* elem, uint length, bool is_mask = false);
 813 
 814   static const TypeVect *makemask(const BasicType elem_bt, uint length) {
 815     // Use bottom primitive type.
 816     return makemask(get_const_basic_type(elem_bt), length);
 817   }
 818   static const TypeVect *makemask(const Type* elem, uint length);
 819 
 820 
 821   virtual const Type *xmeet( const Type *t) const;
 822   virtual const Type *xdual() const;     // Compute dual right now.
 823 
 824   static const TypeVect *VECTA;
 825   static const TypeVect *VECTS;
 826   static const TypeVect *VECTD;
 827   static const TypeVect *VECTX;
 828   static const TypeVect *VECTY;
 829   static const TypeVect *VECTZ;
 830   static const TypeVect *VECTMASK;
 831 
 832 #ifndef PRODUCT
< prev index next >