1104 // be a TypeInstPtr, but may also be a TypeInt::INT for int.class, etc. 1105 ciType* java_mirror_type() const; 1106 1107 virtual const Type *cast_to_ptr_type(PTR ptr) const; 1108 1109 virtual const Type *cast_to_exactness(bool klass_is_exact) const; 1110 1111 virtual const TypeOopPtr *cast_to_instance_id(int instance_id) const; 1112 1113 virtual const TypePtr *add_offset( intptr_t offset ) const; 1114 1115 // Speculative type helper methods. 1116 virtual const Type* remove_speculative() const; 1117 virtual const TypePtr* with_inline_depth(int depth) const; 1118 1119 // the core of the computation of the meet of 2 types 1120 virtual const Type *xmeet_helper(const Type *t) const; 1121 virtual const TypeInstPtr *xmeet_unloaded( const TypeInstPtr *t ) const; 1122 virtual const Type *xdual() const; // Compute dual right now. 1123 1124 // Convenience common pre-built types. 1125 static const TypeInstPtr *NOTNULL; 1126 static const TypeInstPtr *BOTTOM; 1127 static const TypeInstPtr *MIRROR; 1128 static const TypeInstPtr *MARK; 1129 static const TypeInstPtr *KLASS; 1130 #ifndef PRODUCT 1131 virtual void dump2( Dict &d, uint depth, outputStream *st ) const; // Specialized per-Type dumping 1132 #endif 1133 }; 1134 1135 //------------------------------TypeAryPtr------------------------------------- 1136 // Class of Java array pointers 1137 class TypeAryPtr : public TypeOopPtr { 1138 TypeAryPtr( PTR ptr, ciObject* o, const TypeAry *ary, ciKlass* k, bool xk, 1139 int offset, int instance_id, bool is_autobox_cache, 1140 const TypePtr* speculative, int inline_depth) 1141 : TypeOopPtr(AryPtr,ptr,k,xk,o,offset, instance_id, speculative, inline_depth), 1142 _ary(ary), 1143 _is_autobox_cache(is_autobox_cache) | 1104 // be a TypeInstPtr, but may also be a TypeInt::INT for int.class, etc. 1105 ciType* java_mirror_type() const; 1106 1107 virtual const Type *cast_to_ptr_type(PTR ptr) const; 1108 1109 virtual const Type *cast_to_exactness(bool klass_is_exact) const; 1110 1111 virtual const TypeOopPtr *cast_to_instance_id(int instance_id) const; 1112 1113 virtual const TypePtr *add_offset( intptr_t offset ) const; 1114 1115 // Speculative type helper methods. 1116 virtual const Type* remove_speculative() const; 1117 virtual const TypePtr* with_inline_depth(int depth) const; 1118 1119 // the core of the computation of the meet of 2 types 1120 virtual const Type *xmeet_helper(const Type *t) const; 1121 virtual const TypeInstPtr *xmeet_unloaded( const TypeInstPtr *t ) const; 1122 virtual const Type *xdual() const; // Compute dual right now. 1123 1124 const bool is_value_based() const; 1125 const bool can_be_value_based() const; 1126 1127 // Convenience common pre-built types. 1128 static const TypeInstPtr *NOTNULL; 1129 static const TypeInstPtr *BOTTOM; 1130 static const TypeInstPtr *MIRROR; 1131 static const TypeInstPtr *MARK; 1132 static const TypeInstPtr *KLASS; 1133 #ifndef PRODUCT 1134 virtual void dump2( Dict &d, uint depth, outputStream *st ) const; // Specialized per-Type dumping 1135 #endif 1136 }; 1137 1138 //------------------------------TypeAryPtr------------------------------------- 1139 // Class of Java array pointers 1140 class TypeAryPtr : public TypeOopPtr { 1141 TypeAryPtr( PTR ptr, ciObject* o, const TypeAry *ary, ciKlass* k, bool xk, 1142 int offset, int instance_id, bool is_autobox_cache, 1143 const TypePtr* speculative, int inline_depth) 1144 : TypeOopPtr(AryPtr,ptr,k,xk,o,offset, instance_id, speculative, inline_depth), 1145 _ary(ary), 1146 _is_autobox_cache(is_autobox_cache) |