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.