< prev index next >

src/hotspot/share/cds/archiveBuilder.cpp

Print this page
*** 569,11 ***
        if (RegeneratedClasses::has_been_regenerated(klass)) {
          klass = RegeneratedClasses::get_regenerated_object(klass);
        }
        if (is_excluded(klass)) {
          ResourceMark rm;
!         log_debug(cds, dynamic)("Skipping class (excluded): %s", klass->external_name());
          return set_to_null;
        }
      }
  
      return make_a_copy;
--- 569,16 ---
        if (RegeneratedClasses::has_been_regenerated(klass)) {
          klass = RegeneratedClasses::get_regenerated_object(klass);
        }
        if (is_excluded(klass)) {
          ResourceMark rm;
!         aot_log_trace(aot)("pointer set to null: class (excluded): %s", klass->external_name());
+         return set_to_null;
+       }
+       if (klass->is_array_klass() && CDSConfig::is_dumping_dynamic_archive()) {
+         ResourceMark rm;
+         aot_log_trace(aot)("pointer set to null: array class not supported in dynamic region: %s", klass->external_name());
          return set_to_null;
        }
      }
  
      return make_a_copy;

*** 848,18 ***
      if (UseCompactObjectHeaders) {
        Klass* requested_k = to_requested(k);
        address narrow_klass_base = _requested_static_archive_bottom; // runtime encoding base == runtime mapping start
        const int narrow_klass_shift = precomputed_narrow_klass_shift();
        narrowKlass nk = CompressedKlassPointers::encode_not_null_without_asserts(requested_k, narrow_klass_base, narrow_klass_shift);
!       k->set_prototype_header(markWord::prototype().set_narrow_klass(nk));
      }
  #endif //_LP64
!     if (k->is_objArray_klass()) {
        // InstanceKlass and TypeArrayKlass will in turn call remove_unshareable_info
        // on their array classes.
        num_obj_array_klasses ++;
!       type = "array";
      } else if (k->is_typeArray_klass()) {
        num_type_array_klasses ++;
        type = "array";
        k->remove_unshareable_info();
      } else {
--- 853,24 ---
      if (UseCompactObjectHeaders) {
        Klass* requested_k = to_requested(k);
        address narrow_klass_base = _requested_static_archive_bottom; // runtime encoding base == runtime mapping start
        const int narrow_klass_shift = precomputed_narrow_klass_shift();
        narrowKlass nk = CompressedKlassPointers::encode_not_null_without_asserts(requested_k, narrow_klass_base, narrow_klass_shift);
!       k->set_prototype_header_klass(nk);
      }
  #endif //_LP64
!     if (k->is_flatArray_klass()) {
+       num_obj_array_klasses ++;
+       type = "flat array";
+     } else if (k->is_refArray_klass()) {
+         num_obj_array_klasses ++;
+         type = "ref array";
+     } else if (k->is_objArray_klass()) {
        // InstanceKlass and TypeArrayKlass will in turn call remove_unshareable_info
        // on their array classes.
        num_obj_array_klasses ++;
!       type = "obj array";
      } else if (k->is_typeArray_klass()) {
        num_type_array_klasses ++;
        type = "array";
        k->remove_unshareable_info();
      } else {
< prev index next >