8338688: Shenandoah: Avoid calling java_lang_Class accessors in asserts/verifier

Reviewed-by: rkennke, wkemper
This commit is contained in:
Aleksey Shipilev 2024-08-21 16:10:41 +00:00
parent 0e8fe3550b
commit e297e8817f
2 changed files with 2 additions and 2 deletions

View file

@ -266,7 +266,7 @@ void ShenandoahAsserts::assert_correct(void* interior_loc, oop obj, const char*
// Do additional checks for special objects: their fields can hold metadata as well.
// We want to check class loading/unloading did not corrupt them.
if (Universe::is_fully_initialized() && java_lang_Class::is_instance(obj)) {
if (Universe::is_fully_initialized() && (obj_klass == vmClasses::Class_klass())) {
Metadata* klass = obj->metadata_field(java_lang_Class::klass_offset());
if (klass != nullptr && !Metaspace::contains(klass)) {
print_failure(_safe_all, obj, interior_loc, nullptr, "Shenandoah assert_correct failed",

View file

@ -222,7 +222,7 @@ private:
// Do additional checks for special objects: their fields can hold metadata as well.
// We want to check class loading/unloading did not corrupt them.
if (java_lang_Class::is_instance(obj)) {
if (obj_klass == vmClasses::Class_klass()) {
Metadata* klass = obj->metadata_field(java_lang_Class::klass_offset());
check(ShenandoahAsserts::_safe_oop, obj,
klass == nullptr || Metaspace::contains(klass),