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

AARCH64: SymbolTable changes throw assert on aarch64

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: P3
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 12
    • Component/s: hotspot
    • Labels:
    • Subcomponent:
    • Introduced In Version:
      12
    • Resolved In Build:
      b08
    • CPU:
      aarch64
    • OS:
      linux

      Description

      JDK-8195100 introduces an assert that does comparisons between jbyte and char:

        assert(sym->byte_at(i) == _name[i],
                   "%s [%d,%d,%d]", where, i, sym->byte_at(i), _name[i]);

      This fails with:
          assert(sym->byte_at(i) == _name[i]) failed: operator()() [0,-17,239]

      sym->byte_at(i) returns a jbyte, _name is an array of char.
       
      jbyte is a "signed char", however on aarch64 "char" is unsigned.

      The assertion is tripping because while the bits match, it is a comparison between an unsigned and a signed char.

      An obvious fix is to change the assertion to cast to make the types match. However, if there are other comparison operations, it might be better to change the definition of on off the strings.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                smonteith Stuart Monteith
                Reporter:
                smonteith Stuart Monteith
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: