--- old/src/hotspot/share/gc/g1/g1FullGCCompactionPoint.cpp 2019-08-20 10:52:14.560576753 +0200 +++ new/src/hotspot/share/gc/g1/g1FullGCCompactionPoint.cpp 2019-08-20 10:52:14.360573682 +0200 @@ -117,7 +117,7 @@ // Make sure object has the correct mark-word set or that it will be // fixed when restoring the preserved marks. assert(object->mark_raw() == markWord::prototype_for_klass(object->klass()) || // Correct mark - object->mark_must_be_preserved(object->mark_raw()) || // Will be restored by PreservedMarksSet + object->mark_must_be_preserved() || // Will be restored by PreservedMarksSet (UseBiasedLocking && object->has_bias_pattern_raw()), // Will be restored by BiasedLocking "should have correct prototype obj: " PTR_FORMAT " mark: " PTR_FORMAT " prototype: " PTR_FORMAT, p2i(object), object->mark_raw().value(), markWord::prototype_for_klass(object->klass()).value()); --- old/src/hotspot/share/gc/g1/g1FullGCOopClosures.inline.hpp 2019-08-20 10:52:14.852581237 +0200 +++ new/src/hotspot/share/gc/g1/g1FullGCOopClosures.inline.hpp 2019-08-20 10:52:14.656578227 +0200 @@ -78,7 +78,7 @@ if (forwardee == NULL) { // Not forwarded, return current reference. assert(obj->mark_raw() == markWord::prototype_for_klass(obj->klass()) || // Correct mark - obj->mark_must_be_preserved(obj->mark_raw()) || // Will be restored by PreservedMarksSet + obj->mark_must_be_preserved() || // Will be restored by PreservedMarksSet (UseBiasedLocking && obj->has_bias_pattern_raw()), // Will be restored by BiasedLocking "Must have correct prototype or be preserved, obj: " PTR_FORMAT ", mark: " PTR_FORMAT ", prototype: " PTR_FORMAT, p2i(obj), obj->mark_raw().value(), markWord::prototype_for_klass(obj->klass()).value()); --- old/src/hotspot/share/oops/oop.hpp 2019-08-20 10:52:15.228587011 +0200 +++ new/src/hotspot/share/oops/oop.hpp 2019-08-20 10:52:14.984583264 +0200 @@ -314,6 +314,7 @@ inline void set_displaced_mark_raw(markWord m); // Checks if the mark word needs to be preserved + inline bool mark_must_be_preserved() const; inline bool mark_must_be_preserved(markWord m) const; inline bool mark_must_be_preserved_for_promotion_failure(markWord m) const; --- old/src/hotspot/share/oops/oop.inline.hpp 2019-08-20 10:52:15.568592232 +0200 +++ new/src/hotspot/share/oops/oop.inline.hpp 2019-08-20 10:52:15.344588792 +0200 @@ -496,6 +496,10 @@ } }; +bool oopDesc::mark_must_be_preserved() const { + return mark_must_be_preserved(mark_raw()); +} + bool oopDesc::mark_must_be_preserved(markWord m) const { // There's a circular dependency between oop.inline.hpp and // markWord.inline.hpp because markWord::must_be_preserved wants to call