--- old/src/hotspot/share/memory/metaspaceShared.cpp 2018-08-01 22:34:04.420018139 -0700 +++ new/src/hotspot/share/memory/metaspaceShared.cpp 2018-08-01 22:34:04.088005513 -0700 @@ -39,7 +39,7 @@ #include "logging/log.hpp" #include "logging/logMessage.hpp" #include "memory/filemap.hpp" -#include "memory/heapShared.hpp" +#include "memory/heapShared.inline.hpp" #include "memory/metaspace.hpp" #include "memory/metaspaceClosure.hpp" #include "memory/metaspaceShared.hpp" @@ -309,10 +309,10 @@ Universe::set_narrow_klass_range(cds_total); Metaspace::initialize_class_space(tmp_class_space); - tty->print_cr("narrow_klass_base = " PTR_FORMAT ", narrow_klass_shift = %d", + log_info(cds)("narrow_klass_base = " PTR_FORMAT ", narrow_klass_shift = %d", p2i(Universe::narrow_klass_base()), Universe::narrow_klass_shift()); - tty->print_cr("Allocated temporary class space: " SIZE_FORMAT " bytes at " PTR_FORMAT, + log_info(cds)("Allocated temporary class space: " SIZE_FORMAT " bytes at " PTR_FORMAT, CompressedClassSpaceSize, p2i(tmp_class_space.base())); #endif @@ -462,6 +462,7 @@ java_lang_LiveStackFrameInfo::serialize(soc); java_util_concurrent_locks_AbstractOwnableSynchronizer::serialize(soc); jdk_internal_module_ArchivedModuleGraph::serialize(soc); + InstanceMirrorKlass::serialize(soc); } address MetaspaceShared::cds_i2i_entry_code_buffers(size_t total_size) { @@ -1924,8 +1925,9 @@ return archived_oop; } -oop MetaspaceShared::materialize_archived_object(oop obj) { - if (obj != NULL) { +oop MetaspaceShared::materialize_archived_object(narrowOop v) { + if (!CompressedOops::is_null(v)) { + oop obj = HeapShared::decode_not_null(v); return G1CollectedHeap::heap()->materialize_archived_object(obj); } return NULL; @@ -2001,7 +2003,7 @@ "Archived heap object is not allowed"); assert(MetaspaceShared::open_archive_heap_region_mapped(), "Open archive heap region is not mapped"); - *p = CompressedOops::decode_not_null(o); + *p = HeapShared::decode_not_null(o); } } @@ -2148,6 +2150,8 @@ // Initialize the run-time symbol table. SymbolTable::create_table(); + mapinfo->relocate_archived_heap_embedded_pointers(); + // Close the mapinfo file mapinfo->close();