--- old/src/hotspot/share/oops/cpCache.cpp 2019-03-11 14:26:13.790355050 +0100 +++ new/src/hotspot/share/oops/cpCache.cpp 2019-03-11 14:26:13.446355054 +0100 @@ -133,14 +133,19 @@ TosState field_type, bool is_final, bool is_volatile, + bool is_flattened, + bool is_flattenable, Klass* root_klass) { set_f1(field_holder); set_f2(field_offset); assert((field_index & field_index_mask) == field_index, "field index does not fit in low flag bits"); + assert(!is_flattened || is_flattenable, "Sanity check"); set_field_flags(field_type, ((is_volatile ? 1 : 0) << is_volatile_shift) | - ((is_final ? 1 : 0) << is_final_shift), + ((is_final ? 1 : 0) << is_final_shift) | + ((is_flattened ? 1 : 0) << is_flattened_field_shift) | + ((is_flattenable ? 1 : 0) << is_flattenable_field_shift), field_index); set_bytecode_1(get_code); set_bytecode_2(put_code); @@ -287,6 +292,7 @@ // // We set bytecode_2() to _invokevirtual. // See also interpreterRuntime.cpp. (8/25/2000) + invoke_code = Bytecodes::_invokevirtual; } else { assert(invoke_code == Bytecodes::_invokevirtual || (invoke_code == Bytecodes::_invokeinterface && @@ -302,7 +308,7 @@ } } // set up for invokevirtual, even if linking for invokeinterface also: - set_bytecode_2(Bytecodes::_invokevirtual); + set_bytecode_2(invoke_code); } else { ShouldNotReachHere(); }