[foreign-memaccess+abi] RFR: 8291913: Remove the TraceOptimizedUpcallStubs flag
Maurizio Cimadamore
mcimadamore at openjdk.org
Fri Aug 5 14:22:14 UTC 2022
On Thu, 4 Aug 2022 16:20:12 GMT, Jorn Vernee <jvernee at openjdk.org> wrote:
> Removes the `TraceOptimizedUpcallStubs` flag. This flag should have been replaced by unified logging, together with the downcall counterpart, but it seems that part of this was missed.
>
> This patch fixes that, removing the flag, and also adding the disassembly to the logging output. The output is now similar to what we output for downcall stubs.
>
> <details>
> <summary>Sample output (click to unfold)</summary>
>
>
> [0.250s][trace][foreign,upcall] Argument shuffle {
> [0.250s][trace][foreign,upcall] Stack argument slots: 0
> [0.250s][trace][foreign,upcall] }
> [0.250s][trace][foreign,upcall] [CodeBlob (0x00000272554fa090)]
> [0.250s][trace][foreign,upcall] Framesize: 0
> [0.250s][trace][foreign,upcall] UpcallStub (0x00000272554fa090) used for upcall_stub_(Ljava/lang/Object;)V
> [0.250s][trace][foreign,upcall] --------------------------------------------------------------------------------
> [0.250s][trace][foreign,upcall] Decoding CodeBlob, name: upcall_stub_(Ljava/lang/Object;)V, at [0x00000272554fa140, 0x00000272554fa4c8] 904 bytes
> [0.264s][trace][foreign,upcall] 0x00000272554fa140: pushq %rbp
> [0.264s][trace][foreign,upcall] 0x00000272554fa141: movq %rsp, %rbp
> [0.264s][trace][foreign,upcall] 0x00000272554fa144: subq $0x1d0, %rsp
> [0.264s][trace][foreign,upcall] ;; { preserve_callee_saved_regs
> [0.264s][trace][foreign,upcall] 0x00000272554fa14b: movq %rbx, 0x20(%rsp)
> [0.264s][trace][foreign,upcall] 0x00000272554fa150: movq %rsi, 0x28(%rsp)
> [0.264s][trace][foreign,upcall] 0x00000272554fa155: movq %rdi, 0x30(%rsp)
> [0.264s][trace][foreign,upcall] 0x00000272554fa15a: movq %r12, 0x38(%rsp)
> [0.264s][trace][foreign,upcall] 0x00000272554fa15f: movq %r13, 0x40(%rsp)
> [0.264s][trace][foreign,upcall] 0x00000272554fa164: movq %r14, 0x48(%rsp)
> [0.264s][trace][foreign,upcall] 0x00000272554fa169: movq %r15, 0x50(%rsp)
> [0.264s][trace][foreign,upcall] 0x00000272554fa16e: vmovdqu %ymm6, 0x58(%rsp)
> [0.264s][trace][foreign,upcall] 0x00000272554fa174: vmovdqu %ymm7, 0x78(%rsp)
> [0.264s][trace][foreign,upcall] 0x00000272554fa17a: vmovdqu %ymm8, 0x98(%rsp)
> [0.264s][trace][foreign,upcall] 0x00000272554fa183: vmovdqu %ymm9, 0xb8(%rsp)
> [0.264s][trace][foreign,upcall] 0x00000272554fa18c: vmovdqu %ymm10, 0xd8(%rsp)
> [0.264s][trace][foreign,upcall] 0x00000272554fa195: vmovdqu %ymm11, 0xf8(%rsp)
> [0.264s][trace][foreign,upcall] 0x00000272554fa19e: vmovdqu %ymm12, 0x118(%rsp)
> [0.264s][trace][foreign,upcall] 0x00000272554fa1a7: vmovdqu %ymm13, 0x138(%rsp)
> [0.264s][trace][foreign,upcall] 0x00000272554fa1b0: vmovdqu %ymm14, 0x158(%rsp)
> [0.264s][trace][foreign,upcall] 0x00000272554fa1b9: vmovdqu %ymm15, 0x178(%rsp)
> [0.264s][trace][foreign,upcall] ;; } preserve_callee_saved_regs
> [0.264s][trace][foreign,upcall] ;; { on_entry
> [0.264s][trace][foreign,upcall] 0x00000272554fa1c2: vzeroupper
> [0.264s][trace][foreign,upcall] 0x00000272554fa1c5: leaq 0x198(%rsp), %rcx
> [0.264s][trace][foreign,upcall] 0x00000272554fa1cd: movabsq $0x7ffa97a4c2b0, %r10
> [0.264s][trace][foreign,upcall] 0x00000272554fa1d7: callq *%r10
> [0.264s][trace][foreign,upcall] 0x00000272554fa1da: movq %rax, %r15
> [0.264s][trace][foreign,upcall] 0x00000272554fa1dd: xorq %r12, %r12
> [0.264s][trace][foreign,upcall] ;; } on_entry
> [0.264s][trace][foreign,upcall] ;; { argument shuffle
> [0.264s][trace][foreign,upcall] ;; } argument shuffle
> [0.264s][trace][foreign,upcall] ;; { receiver
> [0.264s][trace][foreign,upcall] 0x00000272554fa1e0: movabsq $0x272665e6468, %r10
> [0.264s][trace][foreign,upcall] 0x00000272554fa1ea: testq %r10, %r10
> [0.264s][trace][foreign,upcall] 0x00000272554fa1ed: je 0x272554fa3e4
> [0.264s][trace][foreign,upcall] 0x00000272554fa1f3: testb $1, %r10b
> [0.264s][trace][foreign,upcall] 0x00000272554fa1f7: je 0x272554fa3e1
> [0.264s][trace][foreign,upcall] 0x00000272554fa1fd: movq -1(%r10), %r10
> [0.264s][trace][foreign,upcall] 0x00000272554fa201: cmpb $0, 0x40(%r15)
> [0.264s][trace][foreign,upcall] 0x00000272554fa206: je 0x272554fa3dc
> [0.264s][trace][foreign,upcall] 0x00000272554fa20c: cmpq $0, %r10
> [0.264s][trace][foreign,upcall] 0x00000272554fa210: je 0x272554fa3dc
> [0.264s][trace][foreign,upcall] 0x00000272554fa216: movq 0x28(%r15), %r11
> [0.264s][trace][foreign,upcall] 0x00000272554fa21a: cmpq $0, %r11
> [0.264s][trace][foreign,upcall] 0x00000272554fa21e: je 0x272554fa238
> [0.264s][trace][foreign,upcall] 0x00000272554fa224: subq $8, %r11
> [0.265s][trace][foreign,upcall] 0x00000272554fa228: movq %r11, 0x28(%r15)
> [0.265s][trace][foreign,upcall] 0x00000272554fa22c: addq 0x38(%r15), %r11
> [0.265s][trace][foreign,upcall] 0x00000272554fa230: movq %r10, (%r11)
> [0.265s][trace][foreign,upcall] 0x00000272554fa233: jmp 0x272554fa3dc
> [0.265s][trace][foreign,upcall] ;; push_call_clobbered_registers start
> [0.265s][trace][foreign,upcall] 0x00000272554fa238: subq $0xd0, %rsp
> [0.265s][trace][foreign,upcall] 0x00000272554fa23f: movq %rax, (%rsp)
> [0.265s][trace][foreign,upcall] 0x00000272554fa243: movq %rcx, 8(%rsp)
> [0.265s][trace][foreign,upcall] 0x00000272554fa248: movq %rdx, 0x10(%rsp)
> [0.265s][trace][foreign,upcall] 0x00000272554fa24d: movq %rsi, 0x18(%rsp)
> [0.265s][trace][foreign,upcall] 0x00000272554fa252: movq %rdi, 0x20(%rsp)
> [0.265s][trace][foreign,upcall] 0x00000272554fa257: movq %r8, 0x28(%rsp)
> [0.265s][trace][foreign,upcall] 0x00000272554fa25c: movq %r9, 0x30(%rsp)
> [0.265s][trace][foreign,upcall] 0x00000272554fa261: movq %r10, 0x38(%rsp)
> [0.265s][trace][foreign,upcall] 0x00000272554fa266: movq %r11, 0x40(%rsp)
> [0.265s][trace][foreign,upcall] 0x00000272554fa26b: vmovsd %xmm0, 0x50(%rsp)
> [0.265s][trace][foreign,upcall] 0x00000272554fa271: vmovsd %xmm1, 0x58(%rsp)
> [0.265s][trace][foreign,upcall] 0x00000272554fa277: vmovsd %xmm2, 0x60(%rsp)
> [0.265s][trace][foreign,upcall] 0x00000272554fa27d: vmovsd %xmm3, 0x68(%rsp)
> [0.265s][trace][foreign,upcall] 0x00000272554fa283: vmovsd %xmm4, 0x70(%rsp)
> [0.265s][trace][foreign,upcall] 0x00000272554fa289: vmovsd %xmm5, 0x78(%rsp)
> [0.265s][trace][foreign,upcall] 0x00000272554fa28f: vmovsd %xmm6, 0x80(%rsp)
> [0.265s][trace][foreign,upcall] 0x00000272554fa298: vmovsd %xmm7, 0x88(%rsp)
> [0.265s][trace][foreign,upcall] 0x00000272554fa2a1: vmovsd %xmm8, 0x90(%rsp)
> [0.265s][trace][foreign,upcall] 0x00000272554fa2aa: vmovsd %xmm9, 0x98(%rsp)
> [0.265s][trace][foreign,upcall] 0x00000272554fa2b3: vmovsd %xmm10, 0xa0(%rsp)
> [0.265s][trace][foreign,upcall] 0x00000272554fa2bc: vmovsd %xmm11, 0xa8(%rsp)
> [0.265s][trace][foreign,upcall] 0x00000272554fa2c5: vmovsd %xmm12, 0xb0(%rsp)
> [0.265s][trace][foreign,upcall] 0x00000272554fa2ce: vmovsd %xmm13, 0xb8(%rsp)
> [0.265s][trace][foreign,upcall] 0x00000272554fa2d7: vmovsd %xmm14, 0xc0(%rsp)
> [0.265s][trace][foreign,upcall] 0x00000272554fa2e0: vmovsd %xmm15, 0xc8(%rsp)
> [0.265s][trace][foreign,upcall] ;; push_call_clobbered_registers end
> [0.265s][trace][foreign,upcall] 0x00000272554fa2e9: movq %r15, %rdx
> [0.265s][trace][foreign,upcall] 0x00000272554fa2ec: movq %r10, %rcx
> [0.265s][trace][foreign,upcall] 0x00000272554fa2ef: subq $0x20, %rsp
> [0.265s][trace][foreign,upcall] 0x00000272554fa2f3: testb $0xf, %spl
> [0.265s][trace][foreign,upcall] 0x00000272554fa2f7: je 0x272554fa317
> [0.265s][trace][foreign,upcall] 0x00000272554fa2fd: subq $8, %rsp
> [0.265s][trace][foreign,upcall] 0x00000272554fa301: movabsq $0x7ffa971d4860, %r10
> [0.265s][trace][foreign,upcall] 0x00000272554fa30b: callq *%r10
> [0.265s][trace][foreign,upcall] 0x00000272554fa30e: addq $8, %rsp
> [0.265s][trace][foreign,upcall] 0x00000272554fa312: jmp 0x272554fa324
> [0.265s][trace][foreign,upcall] 0x00000272554fa317: movabsq $0x7ffa971d4860, %r10
> [0.265s][trace][foreign,upcall] 0x00000272554fa321: callq *%r10
> [0.265s][trace][foreign,upcall] 0x00000272554fa324: addq $0x20, %rsp
> [0.265s][trace][foreign,upcall] ;; pop_call_clobbered_registers start
> [0.265s][trace][foreign,upcall] 0x00000272554fa328: vmovsd 0xc8(%rsp), %xmm15
> [0.265s][trace][foreign,upcall] 0x00000272554fa331: vmovsd 0xc0(%rsp), %xmm14
> [0.265s][trace][foreign,upcall] 0x00000272554fa33a: vmovsd 0xb8(%rsp), %xmm13
> [0.265s][trace][foreign,upcall] 0x00000272554fa343: vmovsd 0xb0(%rsp), %xmm12
> [0.265s][trace][foreign,upcall] 0x00000272554fa34c: vmovsd 0xa8(%rsp), %xmm11
> [0.265s][trace][foreign,upcall] 0x00000272554fa355: vmovsd 0xa0(%rsp), %xmm10
> [0.265s][trace][foreign,upcall] 0x00000272554fa35e: vmovsd 0x98(%rsp), %xmm9
> [0.265s][trace][foreign,upcall] 0x00000272554fa367: vmovsd 0x90(%rsp), %xmm8
> [0.265s][trace][foreign,upcall] 0x00000272554fa370: vmovsd 0x88(%rsp), %xmm7
> [0.265s][trace][foreign,upcall] 0x00000272554fa379: vmovsd 0x80(%rsp), %xmm6
> [0.265s][trace][foreign,upcall] 0x00000272554fa382: vmovsd 0x78(%rsp), %xmm5
> [0.265s][trace][foreign,upcall] 0x00000272554fa388: vmovsd 0x70(%rsp), %xmm4
> [0.265s][trace][foreign,upcall] 0x00000272554fa38e: vmovsd 0x68(%rsp), %xmm3
> [0.265s][trace][foreign,upcall] 0x00000272554fa394: vmovsd 0x60(%rsp), %xmm2
> [0.265s][trace][foreign,upcall] 0x00000272554fa39a: vmovsd 0x58(%rsp), %xmm1
> [0.265s][trace][foreign,upcall] 0x00000272554fa3a0: vmovsd 0x50(%rsp), %xmm0
> [0.265s][trace][foreign,upcall] 0x00000272554fa3a6: movq 0x40(%rsp), %r11
> [0.265s][trace][foreign,upcall] 0x00000272554fa3ab: movq 0x38(%rsp), %r10
> [0.265s][trace][foreign,upcall] 0x00000272554fa3b0: movq 0x30(%rsp), %r9
> [0.265s][trace][foreign,upcall] 0x00000272554fa3b5: movq 0x28(%rsp), %r8
> [0.265s][trace][foreign,upcall] 0x00000272554fa3ba: movq 0x20(%rsp), %rdi
> [0.265s][trace][foreign,upcall] 0x00000272554fa3bf: movq 0x18(%rsp), %rsi
> [0.265s][trace][foreign,upcall] 0x00000272554fa3c4: movq 0x10(%rsp), %rdx
> [0.265s][trace][foreign,upcall] 0x00000272554fa3c9: movq 8(%rsp), %rcx
> [0.265s][trace][foreign,upcall] 0x00000272554fa3ce: movq (%rsp), %rax
> [0.265s][trace][foreign,upcall] 0x00000272554fa3d2: addq $0xd0, %rsp
> [0.265s][trace][foreign,upcall] 0x00000272554fa3d9: vzeroupper
> [0.265s][trace][foreign,upcall] ;; pop_call_clobbered_registers end
> [0.265s][trace][foreign,upcall] 0x00000272554fa3dc: jmp 0x272554fa3e4
> [0.265s][trace][foreign,upcall] 0x00000272554fa3e1: movq (%r10), %r10
> [0.265s][trace][foreign,upcall] 0x00000272554fa3e4: movq %r10, %rdx
> [0.265s][trace][foreign,upcall] ;; } receiver
> [0.265s][trace][foreign,upcall] 0x00000272554fa3e7: movabsq $0x27267007f68, %rbx
> [0.265s][trace][foreign,upcall] 0x00000272554fa3f1: movq %rbx, 0x360(%r15)
> [0.265s][trace][foreign,upcall] 0x00000272554fa3f8: callq *0x58(%rbx)
> [0.265s][trace][foreign,upcall] ;; { on_exit
> [0.265s][trace][foreign,upcall] 0x00000272554fa3fb: vzeroupper
> [0.266s][trace][foreign,upcall] 0x00000272554fa3fe: leaq 0x198(%rsp), %rcx
> [0.266s][trace][foreign,upcall] 0x00000272554fa406: movabsq $0x7ffa97a4c490, %r10
> [0.266s][trace][foreign,upcall] 0x00000272554fa410: callq *%r10
> [0.266s][trace][foreign,upcall] 0x00000272554fa413: xorq %r12, %r12
> [0.266s][trace][foreign,upcall] ;; } on_exit
> [0.266s][trace][foreign,upcall] ;; { restore_callee_saved_regs
> [0.266s][trace][foreign,upcall] 0x00000272554fa416: movq 0x20(%rsp), %rbx
> [0.266s][trace][foreign,upcall] 0x00000272554fa41b: movq 0x28(%rsp), %rsi
> [0.266s][trace][foreign,upcall] 0x00000272554fa420: movq 0x30(%rsp), %rdi
> [0.266s][trace][foreign,upcall] 0x00000272554fa425: movq 0x38(%rsp), %r12
> [0.266s][trace][foreign,upcall] 0x00000272554fa42a: movq 0x40(%rsp), %r13
> [0.266s][trace][foreign,upcall] 0x00000272554fa42f: movq 0x48(%rsp), %r14
> [0.266s][trace][foreign,upcall] 0x00000272554fa434: movq 0x50(%rsp), %r15
> [0.266s][trace][foreign,upcall] 0x00000272554fa439: vmovdqu 0x58(%rsp), %ymm6
> [0.266s][trace][foreign,upcall] 0x00000272554fa43f: vmovdqu 0x78(%rsp), %ymm7
> [0.266s][trace][foreign,upcall] 0x00000272554fa445: vmovdqu 0x98(%rsp), %ymm8
> [0.266s][trace][foreign,upcall] 0x00000272554fa44e: vmovdqu 0xb8(%rsp), %ymm9
> [0.266s][trace][foreign,upcall] 0x00000272554fa457: vmovdqu 0xd8(%rsp), %ymm10
> [0.266s][trace][foreign,upcall] 0x00000272554fa460: vmovdqu 0xf8(%rsp), %ymm11
> [0.266s][trace][foreign,upcall] 0x00000272554fa469: vmovdqu 0x118(%rsp), %ymm12
> [0.266s][trace][foreign,upcall] 0x00000272554fa472: vmovdqu 0x138(%rsp), %ymm13
> [0.266s][trace][foreign,upcall] 0x00000272554fa47b: vmovdqu 0x158(%rsp), %ymm14
> [0.266s][trace][foreign,upcall] 0x00000272554fa484: vmovdqu 0x178(%rsp), %ymm15
> [0.266s][trace][foreign,upcall] ;; } restore_callee_saved_regs
> [0.266s][trace][foreign,upcall] 0x00000272554fa48d: leave
> [0.266s][trace][foreign,upcall] 0x00000272554fa48e: retq
> [0.266s][trace][foreign,upcall] ;; { exception handler
> [0.266s][trace][foreign,upcall] 0x00000272554fa48f: vzeroupper
> [0.266s][trace][foreign,upcall] 0x00000272554fa492: movq %rax, %rcx
> [0.266s][trace][foreign,upcall] 0x00000272554fa495: andq $0xfffffffffffffff0, %rsp
> [0.266s][trace][foreign,upcall] 0x00000272554fa499: subq $0x20, %rsp
> [0.266s][trace][foreign,upcall] 0x00000272554fa49d: movabsq $0x7ffa97a4c200, %r10
> [0.266s][trace][foreign,upcall] 0x00000272554fa4a7: callq *%r10
> [0.266s][trace][foreign,upcall] 0x00000272554fa4aa: movabsq $0x7ffa97bfa818, %rcx
> [0.266s][trace][foreign,upcall] 0x00000272554fa4b4: andq $0xfffffffffffffff0, %rsp
> [0.266s][trace][foreign,upcall] 0x00000272554fa4b8: movabsq $0x7ffa9764b370, %r10
> [0.266s][trace][foreign,upcall] 0x00000272554fa4c2: callq *%r10
> [0.266s][trace][foreign,upcall] 0x00000272554fa4c5: hlt
> [0.266s][trace][foreign,upcall] ;; } exception handler
> [0.266s][trace][foreign,upcall] 0x00000272554fa4c6: hlt
> [0.266s][trace][foreign,upcall] 0x00000272554fa4c7: hlt
> [0.266s][trace][foreign,upcall] --------------------------------------------------------------------------------
>
> </details>
Nice!
-------------
Marked as reviewed by mcimadamore (Committer).
PR: https://git.openjdk.org/panama-foreign/pull/698
More information about the panama-dev
mailing list