# HG changeset patch # User aph # Date 1448534313 0 # Thu Nov 26 10:38:33 2015 +0000 # Node ID 6096fae081d57fd111c14e064bb273c5265980a6 # Parent 6100ab176973758e7a19cab7feb9319d67f0650a 8143219: AArch64 broken by 8141132: JEP 254: Compact Strings Reviewed-by: kvn diff --git a/src/cpu/aarch64/vm/aarch64.ad b/src/cpu/aarch64/vm/aarch64.ad --- a/src/cpu/aarch64/vm/aarch64.ad +++ b/src/cpu/aarch64/vm/aarch64.ad @@ -14167,6 +14167,9 @@ format %{ "String Compare $str1,$cnt1,$str2,$cnt2 -> $result # KILL $tmp1" %} ins_encode %{ + // Count is in 8-bit bytes; non-Compact chars are 16 bits. + __ asrw($cnt1$$Register, $cnt1$$Register, 1); + __ asrw($cnt2$$Register, $cnt2$$Register, 1); __ string_compare($str1$$Register, $str2$$Register, $cnt1$$Register, $cnt2$$Register, $result$$Register, $tmp1$$Register); @@ -14223,6 +14226,8 @@ format %{ "String Equals $str1,$str2,$cnt -> $result // KILL $tmp" %} ins_encode %{ + // Count is in 8-bit bytes; non-Compact chars are 16 bits. + __ asrw($cnt$$Register, $cnt$$Register, 1); __ string_equals($str1$$Register, $str2$$Register, $cnt$$Register, $result$$Register, $tmp$$Register);