Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8285378

Remove unnecessary nop for C1 exception and deopt handler

    XMLWordPrintable

Details

    • b22

    Description

      Each C1 method have two nops in the code body. It originally separated the exception/deopt handler block from a code body to fix a "bug 5/14/1999". Now Exception Handler and Deopt Handler are generated in a separate CodeSegment and these nops in the code body don't really help anyone.

      [Verified Entry Point]
        0x0000ffff7c749d40: nop
        0x0000ffff7c749d44: sub x9, sp, #0x20, lsl #12
        0x0000ffff7c749d48: str xzr, [x9]
        0x0000ffff7c749d4c: sub sp, sp, #0x40
        0x0000ffff7c749d50: stp x29, x30, [sp, #48]
        0x0000ffff7c749d54: and w0, w2, #0x1
        0x0000ffff7c749d58: strb w0, [x1, #12]
        0x0000ffff7c749d5c: dmb ishst
        0x0000ffff7c749d60: ldp x29, x30, [sp, #48]
        0x0000ffff7c749d64: add sp, sp, #0x40
        0x0000ffff7c749d68: ldr x8, [x28, #808] ; {poll_return}
        0x0000ffff7c749d6c: cmp sp, x8
        0x0000ffff7c749d70: b.hi 0x0000ffff7c749d78 // b.pmore
        0x0000ffff7c749d74: ret
      # emit_slow_case_stubs
        0x0000ffff7c749d78: adr x8, 0x0000ffff7c749d68 ; {internal_word}
        0x0000ffff7c749d7c: str x8, [x28, #832]
        0x0000ffff7c749d80: b 0x0000ffff7c697480 ; {runtime_call SafepointBlob}
      # Excessive nops: Exception Handler and Deopt Handler prolog
        0x0000ffff7c749d84: nop <----------------------------------------------------------------
        0x0000ffff7c749d88: nop <----------------------------------------------------------------
      # Unwind handler: the handler to remove the activation from the stack and dispatch to the caller.
        0x0000ffff7c749d8c: ldr x0, [x28, #968]
        0x0000ffff7c749d90: str xzr, [x28, #968]
        0x0000ffff7c749d94: str xzr, [x28, #976]
        0x0000ffff7c749d98: ldp x29, x30, [sp, #48]
        0x0000ffff7c749d9c: add sp, sp, #0x40
        0x0000ffff7c749da0: b 0x0000ffff7c73e000 ; {runtime_call unwind_exception Runtime1 stub}
      # Stubs alignment
        0x0000ffff7c749da4: .inst 0x00000000 ; undefined
        0x0000ffff7c749da8: .inst 0x00000000 ; undefined
        0x0000ffff7c749dac: .inst 0x00000000 ; undefined
        0x0000ffff7c749db0: .inst 0x00000000 ; undefined
        0x0000ffff7c749db4: .inst 0x00000000 ; undefined
        0x0000ffff7c749db8: .inst 0x00000000 ; undefined
        0x0000ffff7c749dbc: .inst 0x00000000 ; undefined
      [Exception Handler]
        0x0000ffff7c749dc0: bl 0x0000ffff7c740d00 ; {no_reloc}
        0x0000ffff7c749dc4: dcps1 #0xdeae
        0x0000ffff7c749dc8: .inst 0x853828d8 ; undefined
        0x0000ffff7c749dcc: .inst 0x0000ffff ; undefined
      [Deopt Handler Code]
        0x0000ffff7c749dd0: adr x30, 0x0000ffff7c749dd0
        0x0000ffff7c749dd4: b 0x0000ffff7c6977c0 ; {runtime_call DeoptimizationBlob}

      Attachments

        Issue Links

          Activity

            People

              bulasevich Boris Ulasevich
              bulasevich Boris Ulasevich
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: