--- old/src/hotspot/share/opto/mulnode.cpp 2018-09-03 10:46:30.698452717 +0200 +++ new/src/hotspot/share/opto/mulnode.cpp 2018-09-03 10:46:30.378452721 +0200 @@ -596,6 +596,13 @@ return usr; } } + + if (con == markOopDesc::always_locked_pattern) { + assert(EnableValhalla, "should only be used for value types"); + if (in(1)->is_Load() && phase->type(in(1)->in(MemNode::Address))->is_valuetypeptr()) { + return in(2); // Obj is known to be a value type + } + } } return MulNode::Identity(phase); }