RFR(S): 8231620: assert(bol->is_Bool()) crash during split if due to FastLockNode
Vladimir Ivanov
vladimir.x.ivanov at oracle.com
Fri Oct 4 14:06:46 UTC 2019
Looks good.
(Submitted for testing.)
Best regards,
Vladimir Ivanov
On 02/10/2019 10:34, Roland Westrelin wrote:
>
> http://cr.openjdk.java.net/~roland/8231620/webrev.00/
>
> In test1() of the regression test, the loop is unswitched. Once it is
> there are 2 Lock nodes but a single shared FastLock node. Split if then
> happens with the shared FastLock between the If to be split and the
> dominating Region. C2 then crashes in PhaseIdealLoop::split_up() because
> the pattern with the FastLock is unhandled there. merge_point_safe()
> checks for a FastLock node and it is expected to prevent split if when
> that pattern is encountered. But in the case test1(), There's a CastPP
> between the Phi and the FastLock.
>
> test2() of the regression test is similar except that, instead of a
> CastPP, a load node is between the Phi and the FastLock. That one
> crashes the same way but only on 32 bits because a ConvI2L prevents
> split if on 64 bits.
>
> Rather than try to fix merge_point_safe() to handle every node that can
> be in between the FastLock and the Phi, I propose handling FastLock
> nodes in PhaseIdealLoop::split_up() which is AFAICT straightforward.
>
> Roland.
>
More information about the hotspot-compiler-dev
mailing list