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.
- duplicates
-
JDK-8209623 assert(sym->byte_at(i) == _name[I]) after JDK-8195100 (low latency hash table)
- Closed
- relates to
-
JDK-8209138 Symbol constructor uses u1 as the element type of its name argument
- Resolved
-
JDK-8195100 Use a low latency hashtable for SymbolTable
- Resolved