--- old/src/share/vm/oops/instanceOop.hpp 2016-11-16 09:06:11.394498559 +0100 +++ new/src/share/vm/oops/instanceOop.hpp 2016-11-16 09:06:11.330498557 +0100 @@ -44,8 +44,12 @@ sizeof(instanceOopDesc); } - static bool contains_field_offset(int offset, int nonstatic_field_size) { + static bool contains_field_offset(int offset, int nonstatic_field_size, bool is_value) { int base_in_bytes = base_offset_in_bytes(); + if (is_value) { + // The first field of value types is aligned on a long boundary + base_in_bytes = align_size_up(base_in_bytes, BytesPerLong); + } return (offset >= base_in_bytes && (offset-base_in_bytes) < nonstatic_field_size * heapOopSize); }