< prev index next >

src/hotspot/share/cds/archiveBuilder.cpp

Print this page
@@ -725,10 +725,19 @@
      const char* unlinked = "";
      const char* hidden = "";
      const char* generated = "";
      Klass* k = get_buffered_addr(klasses()->at(i));
      k->remove_java_mirror();
+ #ifdef _LP64
+     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(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";

@@ -827,11 +836,11 @@
  narrowKlass ArchiveBuilder::get_requested_narrow_klass(Klass* k) {
    assert(CDSConfig::is_dumping_heap(), "sanity");
    k = get_buffered_klass(k);
    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 = ArchiveHeapWriter::precomputed_narrow_klass_shift;
+   const int narrow_klass_shift = precomputed_narrow_klass_shift;
    return CompressedKlassPointers::encode_not_null(requested_k, narrow_klass_base, narrow_klass_shift);
  }
  #endif // INCLUDE_CDS_JAVA_HEAP
  
  // RelocateBufferToRequested --- Relocate all the pointers in rw/ro,
< prev index next >