8186842: Use Java class loaders for creating the CDS archive

Co-authored-by: Ioi Lam <ioi.lam@oracle.com>
Reviewed-by: coleenp, jiangli, iklam, mseledtsov
This commit is contained in:
Calvin Cheung 2017-08-28 15:34:04 -07:00
parent de3cc93ca6
commit cf223c0791
33 changed files with 662 additions and 130 deletions

View file

@ -187,12 +187,29 @@ void ArrayKlass::metaspace_pointers_do(MetaspaceClosure* it) {
void ArrayKlass::remove_unshareable_info() {
Klass::remove_unshareable_info();
if (_higher_dimension != NULL) {
ArrayKlass *ak = ArrayKlass::cast(higher_dimension());
ak->remove_unshareable_info();
}
}
void ArrayKlass::remove_java_mirror() {
Klass::remove_java_mirror();
if (_higher_dimension != NULL) {
ArrayKlass *ak = ArrayKlass::cast(higher_dimension());
ak->remove_java_mirror();
}
}
void ArrayKlass::restore_unshareable_info(ClassLoaderData* loader_data, Handle protection_domain, TRAPS) {
assert(loader_data == ClassLoaderData::the_null_class_loader_data(), "array classes belong to null loader");
Klass::restore_unshareable_info(loader_data, protection_domain, CHECK);
// Klass recreates the component mirror also
if (_higher_dimension != NULL) {
ArrayKlass *ak = ArrayKlass::cast(higher_dimension());
ak->restore_unshareable_info(loader_data, protection_domain, CHECK);
}
}
// Printing