--- old/src/hotspot/share/oops/generateOopMap.hpp 2019-03-11 14:26:17.326355001 +0100 +++ new/src/hotspot/share/oops/generateOopMap.hpp 2019-03-11 14:26:17.066355004 +0100 @@ -92,7 +92,7 @@ unsigned int _state; // Masks for separating the BITS and INFO portions of a CellTypeState - enum { info_mask = right_n_bits(28), + enum { info_mask = right_n_bits(27), bits_mask = (int)(~info_mask) }; // These constant are used for manipulating the BITS portion of a @@ -105,18 +105,23 @@ // These constants are used for manipulating the INFO portion of a // CellTypeState - enum { top_info_bit = nth_bit(27), - not_bottom_info_bit = nth_bit(26), - info_data_mask = right_n_bits(26), + enum { top_info_bit = nth_bit(26), + not_bottom_info_bit = nth_bit(25), + info_data_mask = right_n_bits(25), info_conflict = info_mask }; // Within the INFO data, these values are used to distinguish different // kinds of references. - enum { ref_not_lock_bit = nth_bit(25), // 0 if this reference is locked as a monitor - ref_slot_bit = nth_bit(24), // 1 if this reference is a "slot" reference, + enum { ref_not_lock_bit = nth_bit(24), // 0 if this reference is locked as a monitor + ref_slot_bit = nth_bit(23), // 1 if this reference is a "slot" reference, // 0 if it is a "line" reference. - ref_data_mask = right_n_bits(24) }; + ref_data_mask = right_n_bits(23) }; + // Within the INFO data, these values are used to distinguish different + // kinds of value types. + enum { valuetype_slot_bit = nth_bit(24), // 1 if this reference is a "slot" value type, + // 0 if it is a "line" value type. + valuetype_data_mask = right_n_bits(24) }; // These values are used to initialize commonly used CellTypeState // constants. @@ -398,7 +403,8 @@ void do_astore (int idx); void do_jsr (int delta); void do_field (int is_get, int is_static, int idx, int bci); - void do_method (int is_static, int is_interface, int idx, int bci); + void do_method (int is_static, int idx, int bci); + void do_withfield (int idx, int bci); void do_multianewarray (int dims, int bci); void do_monitorenter (int bci); void do_monitorexit (int bci);