[aarch64-port-dev ] RFR: 8156839 : aarch64: indexOf does not support CompactStrings

Andrew Haley aph at redhat.com
Mon May 16 12:53:40 UTC 2016


On 05/12/2016 03:30 PM, Edward Nevill wrote:
> AIUI you get a slow compare. I did the following test. In aarch64.ad I added UL and LU cases to the patterns without adding the corresponding support to the indexof routine in macroAssembler. Thus, if if matches these patterns it will get a guarantee failure. And indeed I get fatal errors from jtreg
> 
> #  Internal Error (macroAssembler_aarch64.cpp:4157), pid=11424,tid=13130
> #  guarantee(ae == StrIntrinsicNode::LL || ae == StrIntrinsicNode::UU) failed: unhandled argument encoding
> 
> There are not many of these. Only 1 in the whole of langtools. And it goes away if I remove the predicates allowing UL and LU.

With your patches I get jtreg fails:

STDOUT:
Checking arrayEqualsB... Done.
Checking arrayEqualsC... Done.
Checking indexOfConstU... Done.
Checking indexOfConstLargeU... Done.
Checking indexOfConstEmptyU... o236	StrIndexOf	=== o235 o7 o253 o254  [[o216  86 ]]

--N: o236	StrIndexOf	=== o235 o7 o253 o254  [[o216  86 ]]

   --N: o253	Binary	=== _ o154 o160  [[o236 ]]
   _Binary_iRegP_R1_iRegI_R2  0  _Binary_iRegP_R1_iRegI_R2
   _Binary_iRegP_R3_iRegI_R4  0  _Binary_iRegP_R3_iRegI_R4
   _Binary_iRegP_R1_iRegI_R4  0  _Binary_iRegP_R1_iRegI_R4
...
# To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc:  SuppressErrorAt=/matcher.cpp:1569
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/home/aph/hs/hotspot/src/share/vm/opto/matcher.cpp:1569), pid=13951, tid=14040
#  assert(false) failed: bad AD file
#
# JRE version: OpenJDK Runtime Environment (9.0) (slowdebug build 9-internal+0-2016-05-16-113151.aph.hs)
# Java VM: OpenJDK 64-Bit Server VM (slowdebug 9-internal+0-2016-05-16-113151.aph.hs, mixed mode, tiered, compressed oops, g1 gc, linux-aarch64)
# No core dump will be written. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /home/aph/hs/hotspot/test/JTwork/scratch/hs_err_pid13951.log

(gdb) p ((StrIndexOfNode*)n)->encoding()
$4 = StrIntrinsicNode::UL

So yes, we do have to cope with all of the combinations.

Andrew.



More information about the hotspot-compiler-dev mailing list