On 8/15/19 9:11 PM, Mandy Chung wrote: > On 8/15/19 11:59 AM, Aleksey Shipilev wrote: >> On 8/14/19 9:42 PM, Mandy Chung wrote: >>> http://cr.openjdk.java.net/~mchung/jdk14/8193325/webrev.05/ >> Looks good. >> >> So, to reiterate, we do not need to initialize bci to -1 for StackFrameInfo, >> because it is not >> exposed anywhere? >> > No, it is only exposed via public API after the StackFrameInfo is filled by > the VM. > > If the uninitialized value is observed, the MemberName may not be > uninitialized either. Both bci > and MemberName fields should be handled if the race becomes an issue.
Okay then. I checked the object footprints before/after the patch, and they are the same. After-patch version has a single byte to spare for something else, if we ever needed it. (The first gap is VM-injected "version" field). == x86_64, -XX:+UseCompressedOops java.lang.StackFrameInfo object internals: OFFSET SIZE TYPE DESCRIPTION VALUE 0 12 (object header) N/A 12 4 int StackFrameInfo.bci N/A 16 2 (alignment/padding gap) 18 1 boolean StackFrameInfo.retainClassRef N/A 19 1 (alignment/padding gap) 20 4 java.lang.Object StackFrameInfo.memberName N/A 24 4 java.lang.StackTraceElement StackFrameInfo.ste N/A 28 4 (loss due to the next object alignment) Instance size: 32 bytes == x86_64, -XX:-UseCompressedOops java.lang.StackFrameInfo object internals: OFFSET SIZE TYPE DESCRIPTION VALUE 0 16 (object header) N/A 16 4 int StackFrameInfo.bci N/A 20 2 (alignment/padding gap) 22 1 boolean StackFrameInfo.retainClassRef N/A 23 1 (alignment/padding gap) 24 8 java.lang.Object StackFrameInfo.memberName N/A 32 8 java.lang.StackTraceElement StackFrameInfo.ste N/A Instance size: 40 bytes Space losses: 3 bytes internal + 0 bytes external = 3 bytes total == x86_32: java.lang.StackFrameInfo object internals: OFFSET SIZE TYPE DESCRIPTION VALUE 0 8 (object header) N/A 8 4 int StackFrameInfo.bci N/A 12 2 (alignment/padding gap) 14 1 boolean StackFrameInfo.retainClassRef N/A 15 1 (alignment/padding gap) 16 4 java.lang.Object StackFrameInfo.memberName N/A 20 4 java.lang.StackTraceElement StackFrameInfo.ste N/A Instance size: 24 bytes Space losses: 3 bytes internal + 0 bytes external = 3 bytes total -- Thanks, -Aleksey