--- old/src/hotspot/share/memory/heapShared.hpp 2018-10-03 15:10:35.032220561 -0400 +++ new/src/hotspot/share/memory/heapShared.hpp 2018-10-03 15:10:33.636139544 -0400 @@ -111,7 +111,22 @@ class HeapShared: AllStatic { friend class VerifySharedOopClosure; private: + static bool _open_archive_heap_region_mapped; + static bool _archive_heap_region_fixed; + #if INCLUDE_CDS_JAVA_HEAP + static bool oop_equals(oop const& p1, oop const& p2) { + return p1 == p2; + } + static unsigned oop_hash(oop const& p); + + typedef ResourceHashtable ArchivedObjectCache; + static ArchivedObjectCache* _archived_object_cache; + // This is a list of subgraph infos built at dump time while // archiving object subgraphs. static KlassSubGraphInfo* _subgraph_info_list; @@ -141,14 +156,6 @@ static address _narrow_oop_base; static int _narrow_oop_shift; - static bool oop_equals(oop const& p1, oop const& p2) { - return primitive_equals(p1, p2); - } - - static unsigned oop_hash(oop const& p) { - return primitive_hash
((address)p); - } - typedef ResourceHashtable *closed, + GrowableArray *open); + static void copy_closed_archive_heap_objects(GrowableArray * closed_archive); + static void copy_open_archive_heap_objects(GrowableArray * open_archive); #endif // INCLUDE_CDS_JAVA_HEAP + public: + static bool is_heap_object_archiving_allowed() { + CDS_JAVA_HEAP_ONLY(return (UseG1GC && UseCompressedOops && UseCompressedClassPointers);) + NOT_CDS_JAVA_HEAP(return false;) + } + + static void set_open_archive_heap_region_mapped() { + CDS_JAVA_HEAP_ONLY(_open_archive_heap_region_mapped = true); + NOT_CDS_JAVA_HEAP_RETURN; + } + static bool open_archive_heap_region_mapped() { + CDS_JAVA_HEAP_ONLY(return _open_archive_heap_region_mapped); + NOT_CDS_JAVA_HEAP_RETURN_(false); + } + + static void fixup_mapped_heap_regions() NOT_CDS_JAVA_HEAP_RETURN; + + inline static bool is_archived_object(oop p) NOT_CDS_JAVA_HEAP_RETURN_(false); + + static void archive_java_heap_objects() NOT_CDS_JAVA_HEAP_RETURN; + static char* read_archived_subgraph_infos(char* buffer) NOT_CDS_JAVA_HEAP_RETURN_(buffer); static void write_archived_subgraph_infos() NOT_CDS_JAVA_HEAP_RETURN; static void initialize_from_archived_subgraph(Klass* k) NOT_CDS_JAVA_HEAP_RETURN; @@ -202,7 +261,7 @@ size_t oopmap_in_bits) NOT_CDS_JAVA_HEAP_RETURN; static void init_archivable_static_fields(Thread* THREAD) NOT_CDS_JAVA_HEAP_RETURN; - static void archive_static_fields(Thread* THREAD) NOT_CDS_JAVA_HEAP_RETURN; + static void archive_object_subgraphs(Thread* THREAD) NOT_CDS_JAVA_HEAP_RETURN; #if INCLUDE_CDS_JAVA_HEAP static ResourceBitMap calculate_oopmap(MemRegion region);