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