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

Reply via email to