< prev index next >

src/hotspot/share/oops/instanceMirrorKlass.inline.hpp

Print this page
rev 47865 : [mq]: 8179244-Assert-failed-in-instanceMirrorKlass.inline.hpp

*** 69,82 **** Devirtualizer<nv>::do_cld(closure, klass->class_loader_data()); } else { Devirtualizer<nv>::do_klass(closure, klass); } } else { ! // If klass is NULL then this a mirror for a primitive type. ! // We don't have to follow them, since they are handled as strong ! // roots in Universe::oops_do. ! assert(java_lang_Class::is_primitive(obj), "Sanity check"); } } oop_oop_iterate_statics<nv>(obj, closure); } --- 69,87 ---- Devirtualizer<nv>::do_cld(closure, klass->class_loader_data()); } else { Devirtualizer<nv>::do_klass(closure, klass); } } else { ! // We would like to assert here (as below) that if klass has been NULL, then ! // this has been a mirror for a primitive type that we do not need to follow ! // as they are always strong roots. ! // However, we might get across a klass that just changed during CMS concurrent ! // marking if allocation occurred in the old generation. ! // This is benign here, as we keep alive all CLDs that were loaded during the ! // CMS concurrent phase in the class loading, i.e. they will be iterated over ! // and kept alive during remark. ! // assert(java_lang_Class::is_primitive(obj), "Sanity check"); } } oop_oop_iterate_statics<nv>(obj, closure); }
< prev index next >