6262#include " logging/log.hpp"
6363#include " logging/logMessage.hpp"
6464#include " logging/logStream.hpp"
65+ #include " memory/memoryReserver.hpp"
6566#include " memory/metaspace.hpp"
6667#include " memory/metaspaceClosure.hpp"
6768#include " memory/resourceArea.hpp"
@@ -282,7 +283,7 @@ void MetaspaceShared::initialize_for_static_dump() {
282283 SharedBaseAddress = (size_t )_requested_base_address;
283284
284285 size_t symbol_rs_size = LP64_ONLY (3 * G) NOT_LP64 (128 * M);
285- _symbol_rs = ReservedSpace (symbol_rs_size, mtClassShared);
286+ _symbol_rs = MemoryReserver::reserve (symbol_rs_size, mtClassShared);
286287 if (!_symbol_rs.is_reserved ()) {
287288 log_error (cds)(" Unable to reserve memory for symbols: " SIZE_FORMAT " bytes." , symbol_rs_size);
288289 MetaspaceShared::unrecoverable_writing_error ();
@@ -1266,7 +1267,9 @@ MapArchiveResult MetaspaceShared::map_archives(FileMapInfo* static_mapinfo, File
12661267 if (use_requested_addr) {
12671268 assert (!total_space_rs.is_reserved (), " Should not be reserved for Windows" );
12681269 log_info (cds)(" Windows mmap workaround: releasing archive space." );
1269- archive_space_rs.release ();
1270+ MemoryReserver::release (archive_space_rs);
1271+ // Mark as not reserved
1272+ archive_space_rs = {};
12701273 }
12711274 }
12721275 MapArchiveResult static_result = map_archive (static_mapinfo, mapped_base_address, archive_space_rs);
@@ -1438,8 +1441,10 @@ char* MetaspaceShared::reserve_address_space_for_archives(FileMapInfo* static_ma
14381441 " Archive base address unaligned: " PTR_FORMAT " , needs alignment: %zu." ,
14391442 p2i (base_address), archive_space_alignment);
14401443
1441- archive_space_rs = ReservedSpace (archive_space_size, archive_space_alignment,
1442- os::vm_page_size (), (char *)base_address);
1444+ archive_space_rs = MemoryReserver::reserve ((char *)base_address,
1445+ archive_space_size,
1446+ archive_space_alignment,
1447+ os::vm_page_size ());
14431448 if (archive_space_rs.is_reserved ()) {
14441449 assert (base_address == nullptr ||
14451450 (address)archive_space_rs.base () == base_address, " Sanity" );
@@ -1505,10 +1510,14 @@ char* MetaspaceShared::reserve_address_space_for_archives(FileMapInfo* static_ma
15051510 // caller will not split the combined space for mapping, instead read the archive data
15061511 // via sequential file IO.
15071512 address ccs_base = base_address + archive_space_size + gap_size;
1508- archive_space_rs = ReservedSpace (archive_space_size, archive_space_alignment,
1509- os::vm_page_size (), (char *)base_address);
1510- class_space_rs = ReservedSpace (class_space_size, class_space_alignment,
1511- os::vm_page_size (), (char *)ccs_base);
1513+ archive_space_rs = MemoryReserver::reserve ((char *)base_address,
1514+ archive_space_size,
1515+ archive_space_alignment,
1516+ os::vm_page_size ());
1517+ class_space_rs = MemoryReserver::reserve ((char *)ccs_base,
1518+ class_space_size,
1519+ class_space_alignment,
1520+ os::vm_page_size ());
15121521 }
15131522 if (!archive_space_rs.is_reserved () || !class_space_rs.is_reserved ()) {
15141523 release_reserved_spaces (total_space_rs, archive_space_rs, class_space_rs);
@@ -1519,8 +1528,10 @@ char* MetaspaceShared::reserve_address_space_for_archives(FileMapInfo* static_ma
15191528 MemTracker::record_virtual_memory_tag (class_space_rs.base (), mtClass);
15201529 } else {
15211530 if (use_archive_base_addr && base_address != nullptr ) {
1522- total_space_rs = ReservedSpace (total_range_size, base_address_alignment,
1523- os::vm_page_size (), (char *) base_address);
1531+ total_space_rs = MemoryReserver::reserve ((char *) base_address,
1532+ total_range_size,
1533+ base_address_alignment,
1534+ os::vm_page_size ());
15241535 } else {
15251536 // We did not manage to reserve at the preferred address, or were instructed to relocate. In that
15261537 // case we reserve wherever possible, but the start address needs to be encodable as narrow Klass
@@ -1568,15 +1579,18 @@ void MetaspaceShared::release_reserved_spaces(ReservedSpace& total_space_rs,
15681579 ReservedSpace& class_space_rs) {
15691580 if (total_space_rs.is_reserved ()) {
15701581 log_debug (cds)(" Released shared space (archive + class) " INTPTR_FORMAT, p2i (total_space_rs.base ()));
1571- total_space_rs.release ();
1582+ MemoryReserver::release (total_space_rs);
1583+ total_space_rs = {};
15721584 } else {
15731585 if (archive_space_rs.is_reserved ()) {
15741586 log_debug (cds)(" Released shared space (archive) " INTPTR_FORMAT, p2i (archive_space_rs.base ()));
1575- archive_space_rs.release ();
1587+ MemoryReserver::release (archive_space_rs);
1588+ archive_space_rs = {};
15761589 }
15771590 if (class_space_rs.is_reserved ()) {
15781591 log_debug (cds)(" Released shared space (classes) " INTPTR_FORMAT, p2i (class_space_rs.base ()));
1579- class_space_rs.release ();
1592+ MemoryReserver::release (class_space_rs);
1593+ class_space_rs = {};
15801594 }
15811595 }
15821596}
0 commit comments