118 };
119
120 // Signal values for offsets from a base pointer
121 enum OFFSET_SIGNALS {
122 OffsetTop = -2000000000, // undefined offset
123 OffsetBot = -2000000001 // any possible offset
124 };
125
126 // Min and max WIDEN values.
127 enum WIDEN {
128 WidenMin = 0,
129 WidenMax = 3
130 };
131
132 private:
133 typedef struct {
134 const TYPES dual_type;
135 const BasicType basic_type;
136 const char* msg;
137 const bool isa_oop;
138 const int ideal_reg;
139 const relocInfo::relocType reloc;
140 } TypeInfo;
141
142 // Dictionary of types shared among compilations.
143 static Dict* _shared_type_dict;
144 static TypeInfo _type_info[];
145
146 static int uhash( const Type *const t );
147 // Structural equality check. Assumes that cmp() has already compared
148 // the _base types and thus knows it can cast 't' appropriately.
149 virtual bool eq( const Type *t ) const;
150
151 // Top-level hash-table of types
152 static Dict *type_dict() {
153 return Compile::current()->type_dict();
154 }
155
156 // DUAL operation: reflect around lattice centerline. Used instead of
157 // join to ensure my lattice is symmetric up and down. Dual is computed
158 // lazily, on demand, and cached in _dual.
|
118 };
119
120 // Signal values for offsets from a base pointer
121 enum OFFSET_SIGNALS {
122 OffsetTop = -2000000000, // undefined offset
123 OffsetBot = -2000000001 // any possible offset
124 };
125
126 // Min and max WIDEN values.
127 enum WIDEN {
128 WidenMin = 0,
129 WidenMax = 3
130 };
131
132 private:
133 typedef struct {
134 const TYPES dual_type;
135 const BasicType basic_type;
136 const char* msg;
137 const bool isa_oop;
138 const uint ideal_reg;
139 const relocInfo::relocType reloc;
140 } TypeInfo;
141
142 // Dictionary of types shared among compilations.
143 static Dict* _shared_type_dict;
144 static TypeInfo _type_info[];
145
146 static int uhash( const Type *const t );
147 // Structural equality check. Assumes that cmp() has already compared
148 // the _base types and thus knows it can cast 't' appropriately.
149 virtual bool eq( const Type *t ) const;
150
151 // Top-level hash-table of types
152 static Dict *type_dict() {
153 return Compile::current()->type_dict();
154 }
155
156 // DUAL operation: reflect around lattice centerline. Used instead of
157 // join to ensure my lattice is symmetric up and down. Dual is computed
158 // lazily, on demand, and cached in _dual.
|