< prev index next >

src/hotspot/share/cds/metaspaceShared.cpp

Print this page

1137     } else {
1138       result = MAP_ARCHIVE_MMAP_FAILURE;
1139     }
1140   }
1141 
1142   if (result == MAP_ARCHIVE_SUCCESS) {
1143     SharedBaseAddress = (size_t)mapped_base_address;
1144 #ifdef _LP64
1145         if (Metaspace::using_class_space()) {
1146           // Set up ccs in metaspace.
1147           Metaspace::initialize_class_space(class_space_rs);
1148 
1149           // Set up compressed Klass pointer encoding: the encoding range must
1150           //  cover both archive and class space.
1151           address cds_base = (address)static_mapinfo->mapped_base();
1152           address ccs_end = (address)class_space_rs.end();
1153           assert(ccs_end > cds_base, "Sanity check");
1154 #if INCLUDE_CDS_JAVA_HEAP
1155           // We archived objects with pre-computed narrow Klass id. Set up encoding such that these Ids stay valid.
1156           address precomputed_narrow_klass_base = cds_base;
1157           const int precomputed_narrow_klass_shift = ArchiveHeapWriter::precomputed_narrow_klass_shift;
1158           CompressedKlassPointers::initialize_for_given_encoding(
1159             cds_base, ccs_end - cds_base, // Klass range
1160             precomputed_narrow_klass_base, precomputed_narrow_klass_shift // precomputed encoding, see ArchiveHeapWriter
1161             );
1162 #else
1163           CompressedKlassPointers::initialize (
1164             cds_base, ccs_end - cds_base // Klass range
1165             );
1166 #endif // INCLUDE_CDS_JAVA_HEAP
1167           // map_or_load_heap_region() compares the current narrow oop and klass encodings
1168           // with the archived ones, so it must be done after all encodings are determined.
1169           static_mapinfo->map_or_load_heap_region();
1170         }
1171 #endif // _LP64
1172     log_info(cds)("initial optimized module handling: %s", MetaspaceShared::use_optimized_module_handling() ? "enabled" : "disabled");
1173     log_info(cds)("initial full module graph: %s", CDSConfig::is_loading_full_module_graph() ? "enabled" : "disabled");
1174   } else {
1175     unmap_archive(static_mapinfo);
1176     unmap_archive(dynamic_mapinfo);
1177     release_reserved_spaces(total_space_rs, archive_space_rs, class_space_rs);
1178   }
1179 
1180   return result;

1137     } else {
1138       result = MAP_ARCHIVE_MMAP_FAILURE;
1139     }
1140   }
1141 
1142   if (result == MAP_ARCHIVE_SUCCESS) {
1143     SharedBaseAddress = (size_t)mapped_base_address;
1144 #ifdef _LP64
1145         if (Metaspace::using_class_space()) {
1146           // Set up ccs in metaspace.
1147           Metaspace::initialize_class_space(class_space_rs);
1148 
1149           // Set up compressed Klass pointer encoding: the encoding range must
1150           //  cover both archive and class space.
1151           address cds_base = (address)static_mapinfo->mapped_base();
1152           address ccs_end = (address)class_space_rs.end();
1153           assert(ccs_end > cds_base, "Sanity check");
1154 #if INCLUDE_CDS_JAVA_HEAP
1155           // We archived objects with pre-computed narrow Klass id. Set up encoding such that these Ids stay valid.
1156           address precomputed_narrow_klass_base = cds_base;
1157           const int precomputed_narrow_klass_shift = ArchiveBuilder::precomputed_narrow_klass_shift;
1158           CompressedKlassPointers::initialize_for_given_encoding(
1159             cds_base, ccs_end - cds_base, // Klass range
1160             precomputed_narrow_klass_base, precomputed_narrow_klass_shift // precomputed encoding, see ArchiveBuilder
1161             );
1162 #else
1163           CompressedKlassPointers::initialize (
1164             cds_base, ccs_end - cds_base // Klass range
1165             );
1166 #endif // INCLUDE_CDS_JAVA_HEAP
1167           // map_or_load_heap_region() compares the current narrow oop and klass encodings
1168           // with the archived ones, so it must be done after all encodings are determined.
1169           static_mapinfo->map_or_load_heap_region();
1170         }
1171 #endif // _LP64
1172     log_info(cds)("initial optimized module handling: %s", MetaspaceShared::use_optimized_module_handling() ? "enabled" : "disabled");
1173     log_info(cds)("initial full module graph: %s", CDSConfig::is_loading_full_module_graph() ? "enabled" : "disabled");
1174   } else {
1175     unmap_archive(static_mapinfo);
1176     unmap_archive(dynamic_mapinfo);
1177     release_reserved_spaces(total_space_rs, archive_space_rs, class_space_rs);
1178   }
1179 
1180   return result;
< prev index next >