RFR(XS): 8227384: C2 compilation fails with "graph should be schedulable" when running with -XX:-EliminateLocks

Tobias Hartmann tobias.hartmann at oracle.com
Thu Aug 8 07:38:01 UTC 2019

On 06.08.19 23:12, Vladimir Kozlov wrote:
>> The mark word load for unlocking is created after the release lock
>> membar with both control and memory set to projections of the
>> membar. Because the allocation is non escaping, when the load is later
>> processed, its memory is changed to be above the membar while the
>> control is unchanged. A precedence edge is added by anti dependence
>> checking to force the load above the membar while its control is
>> below. As a result, the graph is not schedulable.
> This reminds me bug Tobias is working on 8228772 [1].

Yes, I think it's the same problem (Roland's regression test does not crash anymore with my fix for
8228772). However, with 8228772, the load is not from the mark word but from the array contents and
therefore Roland's fix does not help in this case.

But in any case, it's nice to fold such mark word loads from newly allocated objects. Please add a
comment to macro.cpp:2594 that describes why that additional IGVN run was added.

Best regards,

More information about the hotspot-compiler-dev mailing list