src/share/vm/memory/cardTableModRefBS.cpp
Print this page
*** 108,122 ****
assert(byte_for(high_bound-1) <= &_byte_map[_last_valid_index], "Checking end of map");
jbyte* guard_card = &_byte_map[_guard_index];
uintptr_t guard_page = align_size_down((uintptr_t)guard_card, _page_size);
_guard_region = MemRegion((HeapWord*)guard_page, _page_size);
! if (!os::commit_memory((char*)guard_page, _page_size, _page_size)) {
! // Do better than this for Merlin
! vm_exit_out_of_memory(_page_size, OOM_MMAP_ERROR, "card table last card");
! }
!
*guard_card = last_card;
_lowest_non_clean =
NEW_C_HEAP_ARRAY(CardArr, max_covered_regions, mtGC);
_lowest_non_clean_chunk_size =
--- 108,119 ----
assert(byte_for(high_bound-1) <= &_byte_map[_last_valid_index], "Checking end of map");
jbyte* guard_card = &_byte_map[_guard_index];
uintptr_t guard_page = align_size_down((uintptr_t)guard_card, _page_size);
_guard_region = MemRegion((HeapWord*)guard_page, _page_size);
! os::commit_memory_or_exit((char*)guard_page, _page_size, _page_size,
! !ExecMem, "card table last card");
*guard_card = last_card;
_lowest_non_clean =
NEW_C_HEAP_ARRAY(CardArr, max_covered_regions, mtGC);
_lowest_non_clean_chunk_size =
*** 310,325 ****
// Must commit new pages.
MemRegion const new_committed =
MemRegion(cur_committed.end(), new_end_for_commit);
assert(!new_committed.is_empty(), "Region should not be empty here");
! if (!os::commit_memory((char*)new_committed.start(),
! new_committed.byte_size(), _page_size)) {
! // Do better than this for Merlin
! vm_exit_out_of_memory(new_committed.byte_size(), OOM_MMAP_ERROR,
! "card table expansion");
! }
// Use new_end_aligned (as opposed to new_end_for_commit) because
// the cur_committed region may include the guard region.
} else if (new_end_aligned < cur_committed.end()) {
// Must uncommit pages.
MemRegion const uncommit_region =
--- 307,319 ----
// Must commit new pages.
MemRegion const new_committed =
MemRegion(cur_committed.end(), new_end_for_commit);
assert(!new_committed.is_empty(), "Region should not be empty here");
! os::commit_memory_or_exit((char*)new_committed.start(),
! new_committed.byte_size(), _page_size,
! !ExecMem, "card table expansion");
// Use new_end_aligned (as opposed to new_end_for_commit) because
// the cur_committed region may include the guard region.
} else if (new_end_aligned < cur_committed.end()) {
// Must uncommit pages.
MemRegion const uncommit_region =