< prev index next >
share/gc/g1/g1PageBasedVirtualSpace.cpp
Print this page
rev 1 : G1GC+POGC+NVDIMM Patch with latest comments incorporated from all.
rev 2 : Removed fcntl and fixed hotspot else violation
*** 132,141 ****
--- 132,155 ----
start, start + num_pages, _committed.size());
char* start_addr = page_start(start);
size_t size = num_pages * _page_size;
+ if (((address)start_addr == (address)os::nvdimm_heapbase())) {
+ // first remove my dummy mapping.
+ if (os::unmap_memory(start_addr, size)) {
+ char* nvdimm_addr = os::attempt_reserve_memory_at(size, start_addr, os::nvdimm_fd());
+ if (nvdimm_addr != start_addr) {
+ vm_exit_during_initialization(
+ err_msg("Could not map memory at %p for NVDIMM %s Fd %d", nvdimm_addr, AllocateOldGenAt, os::nvdimm_fd()));
+ } else {
+ log_info(gc, heap)("NVDIMM Memory successfully mapped at %p, Size %lu", start_addr, size);
+ os::close(os::nvdimm_fd());
+ }
+ }
+ return;
+ }
os::commit_memory_or_exit(start_addr, size, _page_size, _executable,
err_msg("Failed to commit area from " PTR_FORMAT " to " PTR_FORMAT " of length " SIZE_FORMAT ".",
p2i(start_addr), p2i(start_addr + size), size));
}
< prev index next >