[9] RFR (XS): 8153340: Incorrect lower bound for AllocatePrefetchDistance with AllocatePrefetchStyle=3
Vladimir Kozlov
vladimir.kozlov at oracle.com
Thu Apr 21 22:37:21 UTC 2016
Hi, Zoltan
I think we should change code in prefetch_allocation() instead:
Node *cache_adr = new AddPNode(old_eden_top, old_eden_top,
_igvn.MakeConX(step_size + distance));
These way we allow AllocatePrefetchDistance == 0 in all AllocatePrefetchStyle cases - it is consistent.
Thanks,
Vladimir
On 4/21/16 4:30 AM, Zoltán Majó wrote:
> Hi,
>
>
> please review the patch for 8153340.
>
> https://bugs.openjdk.java.net/browse/JDK-8153340
>
>
> Problem: The VM crashes if AllocatePrefetchStyle==3 and AllocatePrefetchDistance==0. The crash happens due to the way the address for the first prefetch instruction is calculated [1]:
>
> If distance==0, cache_addr == old_eden_top. Then, cache_adr &= ~(AllocatePrefetchStepSize - 1) which can zero some of the bits of cache_adr. That result in accesses *before* the newly allocated object.
>
>
> Solution: Set lower limit of AllocatePrefetchDistance to AllocatePrefetchStepSize (for AllocatePrefetchStyle == 3). Unquarantine test.
>
> Webrev:
> http://cr.openjdk.java.net/~zmajo/8153340/webrev.00/
>
> Testing:
> - JPRT (incl. TestOptionsWithRanges.java)
> - local testing on a SPARC machine.
>
> Thank you!
>
> Best regards,
>
>
> Zoltan
>
> [1] http://hg.openjdk.java.net/jdk9/hs-comp/hotspot/file/f27c00e6f6bf/src/share/vm/opto/macro.cpp#l1941
More information about the hotspot-compiler-dev
mailing list