239 const Symbol* _classname;
240 const InstanceKlass* _super_klass;
241 ConstantPool* _constant_pool;
242 Array<u2>* _fields;
243 FieldLayoutInfo* _info;
244 FieldGroup* _root_group;
245 GrowableArray<FieldGroup*> _contended_groups;
246 FieldGroup* _static_fields;
247 FieldLayout* _layout;
248 FieldLayout* _static_layout;
249 ClassLoaderData* _class_loader_data;
250 Handle _protection_domain;
251 int _nonstatic_oopmap_count;
252 int _alignment;
253 int _first_field_offset;
254 int _exact_size_in_bytes;
255 bool _has_nonstatic_fields;
256 bool _is_contended;
257 bool _is_value_type;
258 bool _has_flattening_information;
259
260 FieldGroup* get_or_create_contended_group(int g);
261
262 public:
263 FieldLayoutBuilder(const Symbol* classname, const InstanceKlass* super_klass, ConstantPool* constant_pool,
264 Array<u2>* fields, bool is_contended, bool is_value_type, ClassLoaderData* class_loader_data,
265 Handle protection_domain, FieldLayoutInfo* info);
266
267 int get_alignment() {
268 assert(_alignment != -1, "Uninitialized");
269 return _alignment;
270 }
271
272 int get_first_field_offset() {
273 assert(_first_field_offset != -1, "Uninitialized");
274 return _first_field_offset;
275 }
276
277 int get_exact_size_in_byte() {
278 assert(_exact_size_in_bytes != -1, "Uninitialized");
|
239 const Symbol* _classname;
240 const InstanceKlass* _super_klass;
241 ConstantPool* _constant_pool;
242 Array<u2>* _fields;
243 FieldLayoutInfo* _info;
244 FieldGroup* _root_group;
245 GrowableArray<FieldGroup*> _contended_groups;
246 FieldGroup* _static_fields;
247 FieldLayout* _layout;
248 FieldLayout* _static_layout;
249 ClassLoaderData* _class_loader_data;
250 Handle _protection_domain;
251 int _nonstatic_oopmap_count;
252 int _alignment;
253 int _first_field_offset;
254 int _exact_size_in_bytes;
255 bool _has_nonstatic_fields;
256 bool _is_contended;
257 bool _is_value_type;
258 bool _has_flattening_information;
259 bool _has_nonatomic_values;
260 int _atomic_field_count;
261
262 FieldGroup* get_or_create_contended_group(int g);
263
264 public:
265 FieldLayoutBuilder(const Symbol* classname, const InstanceKlass* super_klass, ConstantPool* constant_pool,
266 Array<u2>* fields, bool is_contended, bool is_value_type, ClassLoaderData* class_loader_data,
267 Handle protection_domain, FieldLayoutInfo* info);
268
269 int get_alignment() {
270 assert(_alignment != -1, "Uninitialized");
271 return _alignment;
272 }
273
274 int get_first_field_offset() {
275 assert(_first_field_offset != -1, "Uninitialized");
276 return _first_field_offset;
277 }
278
279 int get_exact_size_in_byte() {
280 assert(_exact_size_in_bytes != -1, "Uninitialized");
|