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

Incorrect use of ADRP for byte_map_base

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: P4
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 9
    • Component/s: hotspot
    • Labels:
      None
    • Subcomponent:
    • Resolved In Build:
      b105
    • CPU:
      aarch64

      Description

      The adrp() (address of page) assembler macro can reach anywhere in the 48-bit AArch64 address space. However, byte_map_base is not necessarily an address: it might even wrap around the address space so that it is a negative 64-bit constant. In that case, we should not use ADRP to form its address.

      While investigating this bug we discovered that the code stubs for C1's G1 pre- and post-barriers push the incorrect set of registers. We must include the call-clobbered vector registers too; they probably won't be used by the native runtime, but the ABI says that they may be so we must save them.

        Attachments

          Activity

            People

            • Assignee:
              aph Andrew Haley
              Reporter:
              aph Andrew Haley
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: