[aarch64-port-dev ] RFR(s): AArch64: 8149080: Recoginize disjoint array copy in stub code

Hui Shi hui.shi at linaro.org
Mon Feb 8 11:58:15 UTC 2016

Thanks Edward!

> How did you disable the prefetch? Did you use
> -XX:PrefetchCopyIntervalInBytes=0?

I disable prefetch by removing prefetch in stub code and rebuild.

> > 1. Forward array copy can prefetch dest address needed in next string
> append.
> >
> >   Most string append/concatenation operations will append chars after
> early appened char arrays.
> >   For example, str = str1 + str2 + str3
> >   1. when append str1 in forward order, result value array(str.value)
> will be prefetched beyond str1's length with hardware prefetcher
> >   2. when store str2.value into str.value, str.value is already
> prefetched, less cache miss when copy str2.value into str.value
> >   If copy in backward order, after copy str1.value into str.value, it's
> address before str.value[0] get prefetched, this is not useful for next
> append.
> I assume you are talking about automatic hardware prefetching here since
> the SW implementation does not do any prefetching on the destination? In
> that case I can see how repeated forward copys may be more efficient for
> string concatenation.
Yes, its hardware prefecher. perf profiling get the hardware generated
perfecher issued and used. and forward hardware prefetcher hit rate is much
higher in forward array copy.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20160208/c012788e/attachment.html>

More information about the hotspot-compiler-dev mailing list