< 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 >