[lworld] RFR: 8244519: [lworld] C2 compilation fails with 'monitors must always exist for synchronized methods'
thartmann at openjdk.java.net
Thu May 7 08:05:19 UTC 2020
On Wed, 6 May 2020 16:09:23 GMT, Tobias Hartmann <thartmann at openjdk.org> wrote:
> C2 incorrectly assumes that the receiver of a synchronized method of an abstract class can be an inline type and
> therefore adds a runtime check to the locking code (see 'can_be_value_type' check in
> PhaseMacroExpand::expand_lock_node). While processing the JVMState of an uncommon trap emitted for that runtime check,
> we assert because there is no monitor (yet) although the method is synchronized. I've modified
> ciInstanceKlass::can_be_value_klass accordingly and added an to catch similar problems earlier. I've also removed some
> dead code. This fix includes the is_vanilla_constructor() fix from JDK-8243204.
This pull request has now been integrated.
Author: Tobias Hartmann <thartmann at openjdk.org>
Stats: 45 lines in 4 files changed: 11 ins; 32 del; 2 mod
8244519: [lworld] C2 compilation fails with 'monitors must always exist for synchronized methods'
More information about the valhalla-dev