109 case T_INT: |
109 case T_INT: |
110 case T_FLOAT: |
110 case T_FLOAT: |
111 case T_DOUBLE: |
111 case T_DOUBLE: |
112 case T_LONG: |
112 case T_LONG: |
113 case T_OBJECT: |
113 case T_OBJECT: |
114 case T_ADDRESS: // random raw pointer |
114 case T_ADDRESS: // random raw pointer |
115 case T_METADATA: // metadata pointer |
115 case T_METADATA: // metadata pointer |
116 case T_NARROWOOP: // compressed pointer |
116 case T_NARROWOOP: // compressed pointer |
117 case T_CONFLICT: // might as well support a bottom type |
117 case T_NARROWKLASS: // compressed klass pointer |
118 case T_VOID: // padding or other unaddressed word |
118 case T_CONFLICT: // might as well support a bottom type |
|
119 case T_VOID: // padding or other unaddressed word |
119 // layout type must map to itself |
120 // layout type must map to itself |
120 assert(vt == ft, ""); |
121 assert(vt == ft, ""); |
121 break; |
122 break; |
122 default: |
123 default: |
123 // non-layout type must map to a (different) layout type |
124 // non-layout type must map to a (different) layout type |
177 _type2aelembytes[T_ARRAY] = heapOopSize; |
178 _type2aelembytes[T_ARRAY] = heapOopSize; |
178 } |
179 } |
179 |
180 |
180 |
181 |
181 // Map BasicType to signature character |
182 // Map BasicType to signature character |
182 char type2char_tab[T_CONFLICT+1]={ 0, 0, 0, 0, 'Z', 'C', 'F', 'D', 'B', 'S', 'I', 'J', 'L', '[', 'V', 0, 0, 0, 0}; |
183 char type2char_tab[T_CONFLICT+1]={ 0, 0, 0, 0, 'Z', 'C', 'F', 'D', 'B', 'S', 'I', 'J', 'L', '[', 'V', 0, 0, 0, 0, 0}; |
183 |
184 |
184 // Map BasicType to Java type name |
185 // Map BasicType to Java type name |
185 const char* type2name_tab[T_CONFLICT+1] = { |
186 const char* type2name_tab[T_CONFLICT+1] = { |
186 NULL, NULL, NULL, NULL, |
187 NULL, NULL, NULL, NULL, |
187 "boolean", |
188 "boolean", |
211 return T_ILLEGAL; |
213 return T_ILLEGAL; |
212 } |
214 } |
213 |
215 |
214 |
216 |
215 // Map BasicType to size in words |
217 // Map BasicType to size in words |
216 int type2size[T_CONFLICT+1]={ -1, 0, 0, 0, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 0, 1, 1, 1, -1}; |
218 int type2size[T_CONFLICT+1]={ -1, 0, 0, 0, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 0, 1, 1, 1, 1, -1}; |
217 |
219 |
218 BasicType type2field[T_CONFLICT+1] = { |
220 BasicType type2field[T_CONFLICT+1] = { |
219 (BasicType)0, // 0, |
221 (BasicType)0, // 0, |
220 (BasicType)0, // 1, |
222 (BasicType)0, // 1, |
221 (BasicType)0, // 2, |
223 (BasicType)0, // 2, |
232 T_OBJECT, // T_ARRAY = 13, |
234 T_OBJECT, // T_ARRAY = 13, |
233 T_VOID, // T_VOID = 14, |
235 T_VOID, // T_VOID = 14, |
234 T_ADDRESS, // T_ADDRESS = 15, |
236 T_ADDRESS, // T_ADDRESS = 15, |
235 T_NARROWOOP, // T_NARROWOOP= 16, |
237 T_NARROWOOP, // T_NARROWOOP= 16, |
236 T_METADATA, // T_METADATA = 17, |
238 T_METADATA, // T_METADATA = 17, |
237 T_CONFLICT // T_CONFLICT = 18, |
239 T_NARROWKLASS, // T_NARROWKLASS = 18, |
|
240 T_CONFLICT // T_CONFLICT = 19, |
238 }; |
241 }; |
239 |
242 |
240 |
243 |
241 BasicType type2wfield[T_CONFLICT+1] = { |
244 BasicType type2wfield[T_CONFLICT+1] = { |
242 (BasicType)0, // 0, |
245 (BasicType)0, // 0, |
255 T_OBJECT, // T_ARRAY = 13, |
258 T_OBJECT, // T_ARRAY = 13, |
256 T_VOID, // T_VOID = 14, |
259 T_VOID, // T_VOID = 14, |
257 T_ADDRESS, // T_ADDRESS = 15, |
260 T_ADDRESS, // T_ADDRESS = 15, |
258 T_NARROWOOP, // T_NARROWOOP = 16, |
261 T_NARROWOOP, // T_NARROWOOP = 16, |
259 T_METADATA, // T_METADATA = 17, |
262 T_METADATA, // T_METADATA = 17, |
260 T_CONFLICT // T_CONFLICT = 18, |
263 T_NARROWKLASS, // T_NARROWKLASS = 18, |
|
264 T_CONFLICT // T_CONFLICT = 19, |
261 }; |
265 }; |
262 |
266 |
263 |
267 |
264 int _type2aelembytes[T_CONFLICT+1] = { |
268 int _type2aelembytes[T_CONFLICT+1] = { |
265 0, // 0 |
269 0, // 0 |
266 0, // 1 |
270 0, // 1 |
267 0, // 2 |
271 0, // 2 |
268 0, // 3 |
272 0, // 3 |
269 T_BOOLEAN_aelem_bytes, // T_BOOLEAN = 4, |
273 T_BOOLEAN_aelem_bytes, // T_BOOLEAN = 4, |
270 T_CHAR_aelem_bytes, // T_CHAR = 5, |
274 T_CHAR_aelem_bytes, // T_CHAR = 5, |
271 T_FLOAT_aelem_bytes, // T_FLOAT = 6, |
275 T_FLOAT_aelem_bytes, // T_FLOAT = 6, |
272 T_DOUBLE_aelem_bytes, // T_DOUBLE = 7, |
276 T_DOUBLE_aelem_bytes, // T_DOUBLE = 7, |
273 T_BYTE_aelem_bytes, // T_BYTE = 8, |
277 T_BYTE_aelem_bytes, // T_BYTE = 8, |
274 T_SHORT_aelem_bytes, // T_SHORT = 9, |
278 T_SHORT_aelem_bytes, // T_SHORT = 9, |
275 T_INT_aelem_bytes, // T_INT = 10, |
279 T_INT_aelem_bytes, // T_INT = 10, |
276 T_LONG_aelem_bytes, // T_LONG = 11, |
280 T_LONG_aelem_bytes, // T_LONG = 11, |
277 T_OBJECT_aelem_bytes, // T_OBJECT = 12, |
281 T_OBJECT_aelem_bytes, // T_OBJECT = 12, |
278 T_ARRAY_aelem_bytes, // T_ARRAY = 13, |
282 T_ARRAY_aelem_bytes, // T_ARRAY = 13, |
279 0, // T_VOID = 14, |
283 0, // T_VOID = 14, |
280 T_OBJECT_aelem_bytes, // T_ADDRESS = 15, |
284 T_OBJECT_aelem_bytes, // T_ADDRESS = 15, |
281 T_NARROWOOP_aelem_bytes,// T_NARROWOOP= 16, |
285 T_NARROWOOP_aelem_bytes, // T_NARROWOOP= 16, |
282 T_OBJECT_aelem_bytes, // T_METADATA = 17, |
286 T_OBJECT_aelem_bytes, // T_METADATA = 17, |
283 0 // T_CONFLICT = 18, |
287 T_NARROWKLASS_aelem_bytes, // T_NARROWKLASS= 18, |
|
288 0 // T_CONFLICT = 19, |
284 }; |
289 }; |
285 |
290 |
286 #ifdef ASSERT |
291 #ifdef ASSERT |
287 int type2aelembytes(BasicType t, bool allow_address) { |
292 int type2aelembytes(BasicType t, bool allow_address) { |
288 assert(allow_address || t != T_ADDRESS, " "); |
293 assert(allow_address || t != T_ADDRESS, " "); |