RFR 8222712 [lworld] print parameter types for different compiled entry points
Tobias Hartmann
tobias.hartmann at oracle.com
Thu Apr 18 08:46:39 UTC 2019
Hi Ioi,
looks good to me, nice feature!
Thanks,
Tobias
On 18.04.19 03:09, Ioi Lam wrote:
> https://bugs.openjdk.java.net/browse/JDK-8222712
> http://cr.openjdk.java.net/~iklam/valhalla/8222712-print-param-types-for-diff-entry-points.v01/
>
> Compiled methods can have up to 3 entry points that take different types
> of parameters. For debugging purposes, it's useful to print the types of each
> entry point.
>
> The following example shows how the [Verified Entry Point] of a C1 method
> shuffles the parameters before jumping to the [Verified Value Entry Point]:
>
> [Disassembling for mach='i386:x86-64']
> # {method} {0x00007fa9108ed690} 'test' '(QI2CStatic$V;IIIIIIII)I' in 'I2CStatic'
> [Entry Point]
> [Verified Entry Point]
> [Verified Value Entry Point (RO)]
> # parm0: rsi = int
> # parm1: rdx = int
> # parm2: rcx = int
> # parm3: r8 = int
> # parm4: r9 = int
> # parm5: rdi = int
> # parm6: [sp+0x40] = int (sp of caller)
> # parm7: [sp+0x48] = int [RESERVED]
> # parm8: [sp+0x50] = int
> # parm9: [sp+0x58] = int [RESERVED]
> # parm10: [sp+0x60] = int
> # parm11: [sp+0x68] = int
> 0x00007fa924e371e0: push %rbp
> 0x00007fa924e371e1: sub $0x30,%rsp
> 0x00007fa924e371e5: mov $0x7fa9108ed690,%rbx
> 0x00007fa924e371ef: callq 0x00007fa9249d9ac0 ; {runtime_call buffer_value_args}
> 0x00007fa924e371f4: mov 0x10(%rax),%r11d
> 0x00007fa924e371f8: mov %esi,0x10(%r11)
> 0x00007fa924e371fc: mov %edx,0x14(%r11)
> 0x00007fa924e37200: mov %r11,%rsi
> 0x00007fa924e37203: mov %rcx,%rdx
> 0x00007fa924e37206: mov %r8,%rcx
> 0x00007fa924e37209: mov %r9,%r8
> 0x00007fa924e3720c: mov %rdi,%r9
> 0x00007fa924e3720f: mov 0x40(%rsp),%rdi
> 0x00007fa924e37214: mov 0x50(%rsp),%r13
> 0x00007fa924e37219: mov %r13,0x40(%rsp)
> 0x00007fa924e3721e: mov 0x60(%rsp),%r13
> 0x00007fa924e37223: mov %r13,0x48(%rsp)
> 0x00007fa924e37228: mov 0x68(%rsp),%r13
> 0x00007fa924e3722d: mov %r13,0x50(%rsp)
> 0x00007fa924e37232: pop %rbp
> 0x00007fa924e37233: add $0x30,%rsp
> 0x00007fa924e37237: jmpq 0x00007fa924e37240
> ...
> [Verified Value Entry Point]
> # parm0: rsi:rsi = 'java/lang/Object'
> # parm1: rdx = int
> # parm2: rcx = int
> # parm3: r8 = int
> # parm4: r9 = int
> # parm5: rdi = int
> # parm6: [sp+0x40] = int (sp of caller)
> # parm7: [sp+0x48] = int
> # parm8: [sp+0x50] = int
> 0x00007fa924e37240: mov %eax,-0x16000(%rsp)
> 0x00007fa924e37247: push %rbp
> 0x00007fa924e37248: sub $0x30,%rsp
More information about the valhalla-dev
mailing list