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

PPC64: Fix little-endian build after "8077838: Recent developments for ppc"

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • P4
    • 9
    • 9
    • hotspot
    • None
    • b72
    • ppc

    Backports

      Description

        On big-endian ppc64 we need so called 'function descriptors' instead of simple pointers in order to call functions. That's why the Assembler class on ppc64 offers an 'emit_fd()' method which can be used to create such a function descriptor.

        On little-endian ppc64 the ABI was changed (i.e. ABI_ELFv2) and function descriptors have been removed. That's why the before mentioned 'emit_fd()' is being excluded from the build with the help of preprocessor macros if the HotSpot is being build in a little endian environment:

        #if !defined(ABI_ELFv2)
        inline address emit_fd(...)
        #endif

        The drawback of this approach is that every call site which uses 'emit_fd()' has to conditionally handle the case where 'emit_fd()' isn't present as well. This was exactly the problem with change "8077838: Recent developments for ppc" which introduced an unconditional call to 'emit_fd()' in 'VM_Version::config_dscr() which lead to a build failure on little endian.

        A better approach would be to make 'emit_fd()' available on both, little- and big-endian platforms and handle the difference internally, within the function itself. On little-endian, the function will just return the current PC without emitting any code at all while the big-endian variant emits the required function descriptor.

        Attachments

          Issue Links

            Activity

              People

                simonis Volker Simonis
                simonis Volker Simonis
                Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                  Created:
                  Updated:
                  Resolved: