src/hotspot/share/classfile/javaClasses.cpp
changeset 51674 d7dcaacb95dd
parent 51516 7c3891b9f1e0
child 51698 74dde8b66b7f
equal deleted inserted replaced
51673:53e61697a020 51674:d7dcaacb95dd
  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