On Mon, 5 Jun 2023 21:10:22 GMT, Cesar Soares Lucas <cslu...@openjdk.org> wrote:

>> A couple of suggestions about the output:
>> * `merge`: it's clearer to call it `merge_obj`
>> * `obj` vs `merge` output: obj output is duplicated in ScopeDesc entries and 
>> Objects sections; before it was a short version printed in 
>> Locals/Expressions and all the details were included in Objects; I like to 
>> see field locations in the short version, but including everything looks way 
>> too much IMO;
>> * it makes sense to include selector and merge_pointer info in short 
>> version, but `is_root` can be omitted
>
> 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@-1 (line 12)
> ScopeDesc(pc=0x00007f1df515575c offset=3c):
>    TestMultiSFO::test@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 for 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]

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

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

Reply via email to