< prev index next >
src/hotspot/share/classfile/fieldLayoutBuilder.cpp
Print this page
*** 559,570 ****
SystemDictionary::resolve_flattenable_field_or_fail(&fs,
Handle(THREAD, _cfp->_loader_data->class_loader()),
_cfp->_protection_domain, true, CHECK);
assert(klass != NULL, "Sanity check");
ValueKlass* vk = ValueKlass::cast(klass);
! bool flattened = (ValueFieldMaxFlatSize < 0)
|| (vk->size_helper() * HeapWordSize) <= ValueFieldMaxFlatSize;
if (flattened) {
group->add_flattened_field(fs, vk);
_nonstatic_oopmap_count += vk->nonstatic_oop_map_count();
fs.set_flattened(true);
} else {
--- 559,572 ----
SystemDictionary::resolve_flattenable_field_or_fail(&fs,
Handle(THREAD, _cfp->_loader_data->class_loader()),
_cfp->_protection_domain, true, CHECK);
assert(klass != NULL, "Sanity check");
ValueKlass* vk = ValueKlass::cast(klass);
! bool has_flattenable_size = (ValueFieldMaxFlatSize < 0)
|| (vk->size_helper() * HeapWordSize) <= ValueFieldMaxFlatSize;
+ // volatile fields are currently never flattened, this could change in the future
+ bool flattened = !fs.access_flags().is_volatile() && has_flattenable_size;
if (flattened) {
group->add_flattened_field(fs, vk);
_nonstatic_oopmap_count += vk->nonstatic_oop_map_count();
fs.set_flattened(true);
} else {
< prev index next >