RFR: 8264063: Outer Safepoint poll load should not reference the head of inner strip mined loop.
Pengfei Li
pli at openjdk.java.net
Wed Apr 7 03:51:26 UTC 2021
On Wed, 7 Apr 2021 02:29:20 GMT, Vladimir Kozlov <kvn at openjdk.org> wrote:
> When loop is "strip mined" polling address load ([parse1.cpp#L2280](https://github.com/openjdk/jdk/blob/master/src/hotspot/share/opto/parse1.cpp#L2280)) should be cloned together with safepoint node and pinned outside inner loop. Otherwise we have issues like [8263352](https://bugs.openjdk.java.net/browse/JDK-8263352)
>
> I also remove leftover (unused needs_polling_address_input() method) from [8220051](https://bugs.openjdk.java.net/browse/JDK-8220051) changes.
>
> Tested hs-tier1-4
Should we also remove below part of code in `loopTransform.cpp` in this patch?
3704 if (n->is_CountedLoop() && n->as_CountedLoop()->is_strip_mined()) {
3705 // In strip-mined counted loops, the CountedLoopNode may be
3706 // used by the address polling node of the outer safepoint.
3707 // Skip this use because it's safe.
3708 Node* sfpt = n->as_CountedLoop()->outer_safepoint();
3709 Node* polladr = sfpt->in(TypeFunc::Parms+0);
3710 if (use == polladr) {
3711 continue;
3712 }
3713 }
-------------
PR: https://git.openjdk.java.net/jdk/pull/3365
More information about the hotspot-compiler-dev
mailing list