--- old/src/hotspot/share/oops/fieldInfo.hpp 2018-02-15 15:33:24.000000000 -0500 +++ new/src/hotspot/share/oops/fieldInfo.hpp 2018-02-15 15:33:24.000000000 -0500 @@ -51,8 +51,9 @@ #define FIELDINFO_TAG_TYPE_PLAIN 2 #define FIELDINFO_TAG_TYPE_CONTENDED 3 #define FIELDINFO_TAG_TYPE_MASK 3 -#define FIELDINFO_TAG_MASK 7 +#define FIELDINFO_TAG_MASK 15 #define FIELDINFO_FLATTENING_OFFSET 2 +#define FIELDINFO_FLATTENABLE_OFFSET 3 // Packed field has the tag, and can be either of: // hi bits <--------------------------- lo bits @@ -236,6 +237,18 @@ return ((_shorts[low_packed_offset] >> FIELDINFO_FLATTENING_OFFSET) & 1) != 0; } + void set_flattenable(bool b) { + if (b) { + _shorts[low_packed_offset] |= 1 << FIELDINFO_FLATTENABLE_OFFSET; + } else { + _shorts[low_packed_offset] &= ~(1 << FIELDINFO_FLATTENABLE_OFFSET); + } + } + + bool is_flattenable() { + return ((_shorts[low_packed_offset] >> FIELDINFO_FLATTENABLE_OFFSET) & 1) != 0; + } + void set_contended_group(u2 val) { u2 lo = _shorts[low_packed_offset]; switch(lo & FIELDINFO_TAG_TYPE_MASK) {