--- old/src/share/vm/oops/cpCache.hpp 2017-09-19 17:12:48.109903679 -0400 +++ new/src/share/vm/oops/cpCache.hpp 2017-09-19 17:12:47.977903024 -0400 @@ -49,7 +49,7 @@ // _indices [ b2 | b1 | index ] index = constant_pool_index // _f1 [ entry specific ] metadata ptr (method or klass) // _f2 [ entry specific ] vtable or res_ref index, or vfinal method ptr -// _flags [tos|0|F=1|0|0|0|f|v|0 |0000|field_index] (for field entries) +// _flags [tos|0|F=1|0|0|i|f|v|0 |0000|field_index] (for field entries) // bit length [ 4 |1| 1 |1|1|1|1|1|1 |-4--|----16-----] // _flags [tos|0|F=0|M|A|I|f|0|vf|0000|00000|psize] (for method entries) // bit length [ 4 |1| 1 |1|1|1|1|1|1 |-4--|--8--|--8--] @@ -74,6 +74,7 @@ // // The flags after TosState have the following interpretation: // bit 27: 0 for fields, 1 for methods +// i flag true if field is inlined (flatten) // f flag true if field is marked final // v flag true if field is volatile (only for fields) // f2 flag true if f2 contains an oop (e.g., virtual final method) @@ -188,6 +189,7 @@ has_method_type_shift = 25, // (M) does the call site have a MethodType? has_appendix_shift = 24, // (A) does the call site have an appendix argument? is_forced_virtual_shift = 23, // (I) is the interface reference forced to virtual mode? + is_flatten_field = 23, // (i) is the value field flatten? is_final_shift = 22, // (f) is the field or method final? is_volatile_shift = 21, // (v) is the field volatile? is_vfinal_shift = 20, // (vf) did the call resolve to a final method? @@ -226,6 +228,7 @@ TosState field_type, // the (machine) field type bool is_final, // the field is final bool is_volatile, // the field is volatile + bool is_flatten, // the field is flatten (value field) Klass* root_klass // needed by the GC to dirty the klass ); @@ -354,6 +357,7 @@ int parameter_size() const { assert(is_method_entry(), ""); return (_flags & parameter_size_mask); } bool is_volatile() const { return (_flags & (1 << is_volatile_shift)) != 0; } bool is_final() const { return (_flags & (1 << is_final_shift)) != 0; } + bool is_flatten() const { return (_flags & (1 << is_flatten_field)) != 0; } bool is_forced_virtual() const { return (_flags & (1 << is_forced_virtual_shift)) != 0; } bool is_vfinal() const { return (_flags & (1 << is_vfinal_shift)) != 0; } bool has_appendix() const { return (!is_f1_null()) && (_flags & (1 << has_appendix_shift)) != 0; }