RFR: JDK-8287061: Support for rematerializing scalar replaced objects participating in allocation merges [v14]

Cesar Soares Lucas cslucas at openjdk.org
Mon Jun 5 22:49:05 UTC 2023


On Mon, 5 Jun 2023 22:03:59 GMT, Vladimir Ivanov <vlivanov at openjdk.org> wrote:

>> Thanks @iwanowww . Does the output below look good to you? It prints ObjectValue in the same format as it was before this PR and only print details of the merge in the "Objects" section. Is there other output section that you think needs to be adjusted?
>> 
>> 
>> Compiled method (c2)     436   24             TestMultiSFO::test (48 bytes)
>>  total in heap  [0x00007f1df5155590,0x00007f1df5155850] = 704
>>  relocation     [0x00007f1df5155700,0x00007f1df5155718] = 24
>>  main code      [0x00007f1df5155720,0x00007f1df5155788] = 104
>>  stub code      [0x00007f1df5155788,0x00007f1df51557a0] = 24
>>  oops           [0x00007f1df51557a0,0x00007f1df51557b0] = 16
>>  metadata       [0x00007f1df51557b0,0x00007f1df51557b8] = 8
>>  scopes data    [0x00007f1df51557b8,0x00007f1df51557f8] = 64
>>  scopes pcs     [0x00007f1df51557f8,0x00007f1df5155848] = 80
>>  dependencies   [0x00007f1df5155848,0x00007f1df5155850] = 8
>> scopes:
>> ScopeDesc(pc=0x00007f1df515573a offset=1a):
>>    TestMultiSFO::test at -1 (line 12)
>> ScopeDesc(pc=0x00007f1df515575c offset=3c):
>>    TestMultiSFO::test at 28 (line 19)
>>    Locals
>>     - l0: empty
>>     - l1: empty
>>     - l2: empty
>>     - l3: merge_obj[14]
>>     - l4: obj[15]
>> 
>>    Objects
>>     - merge_obj[14], selector="reg rbp [10],int", merge_pointer="nullptr", candidate_objs=[15, 16]
>>     - obj[15], is_root=1, klass: TestMultiSFO$Point 
>> 	  Fields: stack[12], stack[8]
>>     - obj[16], is_root=0, klass: TestMultiSFO$Point 
>> 	  Fields: stack[8], stack[12]
>
> Thanks, it looks much better now (except the position in Objects array is missing). 
> 
> It makes sense to mention `is_root` for merge_obj case even though it's always equals to '1`. Also, make merge_pointer optional and omit it when its value is null.
> 
> BTW instead of printing `is_root=0/1`, you can introduce a more compact notation  and mark relevant lines with a single symbol:
> 
>     - 0: R merge_obj[14], selector="reg rbp [10],int" candidates=[15, 16]
>     - 1: R obj[15], klass: TestMultiSFO$Point 
>  	        Fields: stack[12], stack[8]
>     - 2:   obj[16], klass: TestMultiSFO$Point 
> 	        Fields: stack[8], stack[12]

Sounds good. I'll make the changes and push them asap.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/12897#discussion_r1218671994


More information about the hotspot-dev mailing list