equal
deleted
inserted
replaced
1211 // data is present. After the archived mirror object is restored, the |
1211 // data is present. After the archived mirror object is restored, the |
1212 // shared klass' _has_raw_archived_mirror flag is cleared. |
1212 // shared klass' _has_raw_archived_mirror flag is cleared. |
1213 bool java_lang_Class::restore_archived_mirror(Klass *k, |
1213 bool java_lang_Class::restore_archived_mirror(Klass *k, |
1214 Handle class_loader, Handle module, |
1214 Handle class_loader, Handle module, |
1215 Handle protection_domain, TRAPS) { |
1215 Handle protection_domain, TRAPS) { |
|
1216 // Postpone restoring archived mirror until java.lang.Class is loaded. Please |
|
1217 // see more details in SystemDictionary::resolve_preloaded_classes(). |
|
1218 if (!SystemDictionary::Class_klass_loaded()) { |
|
1219 assert(fixup_mirror_list() != NULL, "fixup_mirror_list not initialized"); |
|
1220 fixup_mirror_list()->push(k); |
|
1221 return true; |
|
1222 } |
|
1223 |
1216 oop m = MetaspaceShared::materialize_archived_object(k->archived_java_mirror_raw_narrow()); |
1224 oop m = MetaspaceShared::materialize_archived_object(k->archived_java_mirror_raw_narrow()); |
1217 |
1225 |
1218 if (m == NULL) { |
1226 if (m == NULL) { |
1219 return false; |
1227 return false; |
1220 } |
1228 } |
1222 log_debug(cds, mirror)("Archived mirror is: " PTR_FORMAT, p2i(m)); |
1230 log_debug(cds, mirror)("Archived mirror is: " PTR_FORMAT, p2i(m)); |
1223 |
1231 |
1224 // mirror is archived, restore |
1232 // mirror is archived, restore |
1225 assert(MetaspaceShared::is_archive_object(m), "must be archived mirror object"); |
1233 assert(MetaspaceShared::is_archive_object(m), "must be archived mirror object"); |
1226 Handle mirror(THREAD, m); |
1234 Handle mirror(THREAD, m); |
1227 |
|
1228 // The java.lang.Class field offsets were archived and reloaded from archive. |
|
1229 // No need to put classes on the fixup_mirror_list before java.lang.Class |
|
1230 // is loaded. |
|
1231 |
1235 |
1232 if (!k->is_array_klass()) { |
1236 if (!k->is_array_klass()) { |
1233 // - local static final fields with initial values were initialized at dump time |
1237 // - local static final fields with initial values were initialized at dump time |
1234 |
1238 |
1235 // create the init_lock |
1239 // create the init_lock |