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