--- old/src/hotspot/share/oops/valueKlass.cpp 2018-05-21 11:52:12.524070857 +0200 +++ new/src/hotspot/share/oops/valueKlass.cpp 2018-05-21 11:52:12.212065299 +0200 @@ -93,7 +93,9 @@ instanceOop ValueKlass::allocate_instance(TRAPS) { int size = size_helper(); // Query before forming handle. - return (instanceOop)CollectedHeap::obj_allocate(this, size, CHECK_NULL); + instanceOop oop = (instanceOop)CollectedHeap::obj_allocate(this, size, CHECK_NULL); + assert(oop->mark()->is_always_locked(), "Unlocked value type"); + return oop; } instanceOop ValueKlass::allocate_buffered_or_heap_instance(bool* in_heap, TRAPS) { @@ -618,3 +620,13 @@ } } } + +void ValueKlass::verify_on(outputStream* st) { + InstanceKlass::verify_on(st); + guarantee(prototype_header()->is_always_locked(), "Prototype header is not always locked"); +} + +void ValueKlass::oop_verify_on(oop obj, outputStream* st) { + InstanceKlass::oop_verify_on(obj, st); + guarantee(obj->mark()->is_always_locked(), "Header is not always locked"); +}