[lworld] Integrated: 8257965: [lworld] C2 compilation fails with assert(unc->peek_monitor_obj() == obj) failed: wrong monitor

Tobias Hartmann thartmann at openjdk.java.net
Thu Dec 10 07:54:49 UTC 2020


On Wed, 9 Dec 2020 14:24:24 GMT, Tobias Hartmann <thartmann at openjdk.org> wrote:

> The assert is too strong because when locking on an object that became known to be an inline type only after parsing, C2 might have scalarized `peek_monitor_obj()` in the debug info of the uncommon trap. I've adjusted the assert but found another problem while writing tests: C2 can eliminate a lock even if the type is not statically known (and therefore could be an inline type) as long as Escape Analysis is able to prove that he object is non-escaping (see `TestLWorld::test133`). We need to add an inline type check to `PhaseMacroExpand::eliminate_locking_node` as well.
> 
> Thanks,
> Tobias

This pull request has now been integrated.

Changeset: 6d1ca782
Author:    Tobias Hartmann <thartmann at openjdk.org>
URL:       https://git.openjdk.java.net/valhalla/commit/6d1ca782
Stats:     201 lines in 7 files changed: 143 ins; 42 del; 16 mod

8257965: [lworld] C2 compilation fails with assert(unc->peek_monitor_obj() == obj) failed: wrong monitor

-------------

PR: https://git.openjdk.java.net/valhalla/pull/299


More information about the valhalla-dev mailing list