src/hotspot/share/memory/filemap.cpp
changeset 54780 f8d182aedc92
parent 54573 b73893f7fee3
child 54825 1b03400e5a8f
equal deleted inserted replaced
54779:e0bd4c7a176e 54780:f8d182aedc92
   182   _magic = CDS_ARCHIVE_MAGIC;
   182   _magic = CDS_ARCHIVE_MAGIC;
   183   _version = CURRENT_CDS_ARCHIVE_VERSION;
   183   _version = CURRENT_CDS_ARCHIVE_VERSION;
   184   _alignment = alignment;
   184   _alignment = alignment;
   185   _obj_alignment = ObjectAlignmentInBytes;
   185   _obj_alignment = ObjectAlignmentInBytes;
   186   _compact_strings = CompactStrings;
   186   _compact_strings = CompactStrings;
   187   _narrow_oop_mode = Universe::narrow_oop_mode();
   187   _narrow_oop_mode = CompressedOops::mode();
   188   _narrow_oop_base = Universe::narrow_oop_base();
   188   _narrow_oop_base = CompressedOops::base();
   189   _narrow_oop_shift = Universe::narrow_oop_shift();
   189   _narrow_oop_shift = CompressedOops::shift();
   190   _max_heap_size = MaxHeapSize;
   190   _max_heap_size = MaxHeapSize;
   191   _narrow_klass_base = Universe::narrow_klass_base();
   191   _narrow_klass_base = CompressedKlassPointers::base();
   192   _narrow_klass_shift = Universe::narrow_klass_shift();
   192   _narrow_klass_shift = CompressedKlassPointers::shift();
   193   _shared_path_table_size = mapinfo->_shared_path_table_size;
   193   _shared_path_table_size = mapinfo->_shared_path_table_size;
   194   _shared_path_table = mapinfo->_shared_path_table;
   194   _shared_path_table = mapinfo->_shared_path_table;
   195   _shared_path_entry_size = mapinfo->_shared_path_entry_size;
   195   _shared_path_entry_size = mapinfo->_shared_path_entry_size;
   196   if (HeapShared::is_heap_object_archiving_allowed()) {
   196   if (HeapShared::is_heap_object_archiving_allowed()) {
   197     _heap_reserved = Universe::heap()->reserved_region();
   197     _heap_reserved = Universe::heap()->reserved_region();
   636                   region, size, p2i(base), _file_offset);
   636                   region, size, p2i(base), _file_offset);
   637   } else {
   637   } else {
   638     si->_file_offset = _file_offset;
   638     si->_file_offset = _file_offset;
   639   }
   639   }
   640   if (HeapShared::is_heap_region(region)) {
   640   if (HeapShared::is_heap_region(region)) {
   641     assert((base - (char*)Universe::narrow_oop_base()) % HeapWordSize == 0, "Sanity");
   641     assert((base - (char*)CompressedOops::base()) % HeapWordSize == 0, "Sanity");
   642     if (base != NULL) {
   642     if (base != NULL) {
   643       si->_addr._offset = (intx)CompressedOops::encode_not_null((oop)base);
   643       si->_addr._offset = (intx)CompressedOops::encode_not_null((oop)base);
   644     } else {
   644     } else {
   645       si->_addr._offset = 0;
   645       si->_addr._offset = 0;
   646     }
   646     }
   974                 narrow_oop_mode(), p2i(narrow_oop_base()), narrow_oop_shift());
   974                 narrow_oop_mode(), p2i(narrow_oop_base()), narrow_oop_shift());
   975 
   975 
   976   log_info(cds)("The current max heap size = " SIZE_FORMAT "M, HeapRegion::GrainBytes = " SIZE_FORMAT,
   976   log_info(cds)("The current max heap size = " SIZE_FORMAT "M, HeapRegion::GrainBytes = " SIZE_FORMAT,
   977                 heap_reserved.byte_size()/M, HeapRegion::GrainBytes);
   977                 heap_reserved.byte_size()/M, HeapRegion::GrainBytes);
   978   log_info(cds)("    narrow_klass_base = " PTR_FORMAT ", narrow_klass_shift = %d",
   978   log_info(cds)("    narrow_klass_base = " PTR_FORMAT ", narrow_klass_shift = %d",
   979                 p2i(Universe::narrow_klass_base()), Universe::narrow_klass_shift());
   979                 p2i(CompressedKlassPointers::base()), CompressedKlassPointers::shift());
   980   log_info(cds)("    narrow_oop_mode = %d, narrow_oop_base = " PTR_FORMAT ", narrow_oop_shift = %d",
   980   log_info(cds)("    narrow_oop_mode = %d, narrow_oop_base = " PTR_FORMAT ", narrow_oop_shift = %d",
   981                 Universe::narrow_oop_mode(), p2i(Universe::narrow_oop_base()), Universe::narrow_oop_shift());
   981                 CompressedOops::mode(), p2i(CompressedOops::base()), CompressedOops::shift());
   982 
   982 
   983   if (narrow_klass_base() != Universe::narrow_klass_base() ||
   983   if (narrow_klass_base() != CompressedKlassPointers::base() ||
   984       narrow_klass_shift() != Universe::narrow_klass_shift()) {
   984       narrow_klass_shift() != CompressedKlassPointers::shift()) {
   985     log_info(cds)("CDS heap data cannot be used because the archive was created with an incompatible narrow klass encoding mode.");
   985     log_info(cds)("CDS heap data cannot be used because the archive was created with an incompatible narrow klass encoding mode.");
   986     return;
   986     return;
   987   }
   987   }
   988 
   988 
   989   if (narrow_oop_mode() != Universe::narrow_oop_mode() ||
   989   if (narrow_oop_mode() != CompressedOops::mode() ||
   990       narrow_oop_base() != Universe::narrow_oop_base() ||
   990       narrow_oop_base() != CompressedOops::base() ||
   991       narrow_oop_shift() != Universe::narrow_oop_shift()) {
   991       narrow_oop_shift() != CompressedOops::shift()) {
   992     log_info(cds)("CDS heap data need to be relocated because the archive was created with an incompatible oop encoding mode.");
   992     log_info(cds)("CDS heap data need to be relocated because the archive was created with an incompatible oop encoding mode.");
   993     _heap_pointers_need_patching = true;
   993     _heap_pointers_need_patching = true;
   994   } else {
   994   } else {
   995     MemRegion range = get_heap_regions_range_with_current_oop_encoding_mode();
   995     MemRegion range = get_heap_regions_range_with_current_oop_encoding_mode();
   996     if (!heap_reserved.contains(range)) {
   996     if (!heap_reserved.contains(range)) {