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 =