String.compare intrinsics:
C2_MacroAssembler::string_compare()
generate_compare_long_string_different_encoding()
generate_compare_long_string_same_encoding()
All do misaligned memory access even when -XX:+AvoidUnalignedAccesses
C2_MacroAssembler::string_compare() and generate_compare_long_string_same_encoding() do it only for the tail.
generate_compare_long_string_different_encoding does it for Latin string ( address is 4 b-bytes aligned but no 8-bytes aligned, and reading 8 bytes on every iteration of the loop).
This results in pretty bad results ( in jmh benches) on platforms without hardware misaligned access support ( like hifive unmatched)