RFR: 8263352: assert(use == polladr) failed: the use should be a safepoint polling
Vladimir Kozlov
kvn at openjdk.java.net
Thu Mar 18 18:23:39 UTC 2021
On Thu, 18 Mar 2021 02:26:05 GMT, Wang Huang <whuang at openjdk.org> wrote:
> The main reason of this failure has been shown in JDK-8263352.
> * JDK-8260637 makes a CastPP unpinned, so it can be pull out of inner loop
> * JDK-8247307 assert use == polladr and makes it crash here.
> * I think we can only `intrinsify_fill` the array when it is *really* safe here, so I fix this bug by `return` other cases.
> In this patch, I will give a small test case called `Test8263352.java` to reproduct this failure.
> Thanks to @vnkozlov , who found this failure for the first time (to me).
> Thanks to @nsjian,who found the case which can reproduct this failure everytime.
> Thanks to @pfustc, who changed notes with us.
I have question for @rwestrel who did strip mining. Looking on nodes I see:
1247 CountedLoop === 1247 1246 794 [[ 1247 788 741 738 781 1242 ]] inner stride: 1 strip mined !orig=[1237],[731] !jvms: ComponentSampleModel::<init> @ bci:147 (line 162)
1242 CountedLoopEnd === 1247 1241 [[ 1243 794 ]] [lt] P=0.646827, C=6564.000000 !orig=[793] !jvms: ComponentSampleModel::<init> @ bci:144 (line 161)
1243 IfFalse === 1242 [[ 1248 ]] #0 !orig=795 !jvms: ComponentSampleModel::<init> @ bci:144 (line 161)
788 LoadP === 1247 659 787 [[ 1248 ]] @rawptr:BotPTR, idx=Raw; #rawptr:BotPTR (does not depend only on test) !jvms: ComponentSampleModel::<init> @ bci:158 (line 161)
1248 SafePoint === 1243 1 784 1 1 788 10 1 1 1 1 1 1 782 [[ 1244 ]] SafePoint !orig=783 !jvms: ComponentSampleModel::<init> @ bci:158 (line 161)
So why Poll's LoadP node's control edge is not the same as SafePoint's control edge? Why it points to inner loop head?
If we adjust LoadP's control edge to the same node as Safepoint (exit from inner loop), we would not need this special case in match_fill_loop().
-------------
PR: https://git.openjdk.java.net/jdk/pull/3061
More information about the hotspot-compiler-dev
mailing list