--- old/src/hotspot/share/oops/instanceMirrorKlass.inline.hpp 2020-03-26 15:59:21.000000000 -0700 +++ new/src/hotspot/share/oops/instanceMirrorKlass.inline.hpp 2020-03-26 15:59:21.000000000 -0700 @@ -1,4 +1,5 @@ -/* Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved. +/* + * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -51,10 +52,9 @@ Klass* klass = java_lang_Class::as_Klass_raw(obj); // We'll get NULL for primitive mirrors. if (klass != NULL) { - if (klass->is_instance_klass() && - InstanceKlass::cast(klass)->is_unsafe_anonymous()) { - // An unsafe anonymous class doesn't have its own class loader, so - // when handling the java mirror for the class we need to make sure its class + if (klass->is_instance_klass() && klass->class_loader_data()->has_class_mirror_holder()) { + // A weak hidden or an unsafe anonymous class doesn't have its own class loader, + // so when handling the java mirror for the class we need to make sure its class // loader data is claimed, this is done by calling do_cld explicitly. // For non-anonymous classes the call to do_cld is made when the class // loader itself is handled.