--- old/src/share/vm/oops/instanceMirrorKlass.inline.hpp 2015-06-22 11:04:45.494687725 +0200 +++ new/src/share/vm/oops/instanceMirrorKlass.inline.hpp 2015-06-22 11:04:45.378687150 +0200 @@ -60,7 +60,16 @@ Klass* klass = java_lang_Class::as_Klass(obj); // We'll get NULL for primitive mirrors. if (klass != NULL) { - Devirtualizer::do_klass(closure, klass); + if (klass->oop_is_instance() && InstanceKlass::cast(klass)->is_anonymous()) { + // An anonymous class doesn't have its own class loader, sowhen handling + // the java mirror for an anonymous 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. + Devirtualizer::do_cld(closure, klass->class_loader_data()); + } else { + Devirtualizer::do_klass(closure, klass); + } } }