src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp

Print this page

        

*** 354,363 **** --- 354,364 ---- ParallelCompactData::ParallelCompactData() { _region_start = 0; _region_vspace = 0; + _reserved_byte_size = 0; _region_data = 0; _region_count = 0; } bool ParallelCompactData::initialize(MemRegion covered_region)
*** 380,402 **** ParallelCompactData::create_vspace(size_t count, size_t element_size) { const size_t raw_bytes = count * element_size; const size_t page_sz = os::page_size_for_region(raw_bytes, raw_bytes, 10); const size_t granularity = os::vm_allocation_granularity(); ! const size_t bytes = align_size_up(raw_bytes, MAX2(page_sz, granularity)); const size_t rs_align = page_sz == (size_t) os::vm_page_size() ? 0 : MAX2(page_sz, granularity); ! ReservedSpace rs(bytes, rs_align, rs_align > 0); os::trace_page_sizes("par compact", raw_bytes, raw_bytes, page_sz, rs.base(), rs.size()); MemTracker::record_virtual_memory_type((address)rs.base(), mtGC); PSVirtualSpace* vspace = new PSVirtualSpace(rs, page_sz); if (vspace != 0) { ! if (vspace->expand_by(bytes)) { return vspace; } delete vspace; // Release memory reserved in the space. rs.release(); --- 381,403 ---- ParallelCompactData::create_vspace(size_t count, size_t element_size) { const size_t raw_bytes = count * element_size; const size_t page_sz = os::page_size_for_region(raw_bytes, raw_bytes, 10); const size_t granularity = os::vm_allocation_granularity(); ! _reserved_byte_size = align_size_up(raw_bytes, MAX2(page_sz, granularity)); const size_t rs_align = page_sz == (size_t) os::vm_page_size() ? 0 : MAX2(page_sz, granularity); ! ReservedSpace rs(_reserved_byte_size, rs_align, rs_align > 0); os::trace_page_sizes("par compact", raw_bytes, raw_bytes, page_sz, rs.base(), rs.size()); MemTracker::record_virtual_memory_type((address)rs.base(), mtGC); PSVirtualSpace* vspace = new PSVirtualSpace(rs, page_sz); if (vspace != 0) { ! if (vspace->expand_by(_reserved_byte_size)) { return vspace; } delete vspace; // Release memory reserved in the space. rs.release();
*** 839,856 **** initialize_space_info(); initialize_dead_wood_limiter(); if (!_mark_bitmap.initialize(mr)) { ! vm_shutdown_during_initialization("Unable to allocate bit map for " ! "parallel garbage collection for the requested heap size."); return false; } if (!_summary_data.initialize(mr)) { ! vm_shutdown_during_initialization("Unable to allocate tables for " ! "parallel garbage collection for the requested heap size."); return false; } return true; } --- 840,861 ---- initialize_space_info(); initialize_dead_wood_limiter(); if (!_mark_bitmap.initialize(mr)) { ! vm_shutdown_during_initialization( ! err_msg("Unable to allocate " SIZE_FORMAT " byte bitmap " ! "for parallel garbage collection for the requested " SIZE_FORMAT " byte heap size.", ! _mark_bitmap.reserved_byte_size(), mr.byte_size())); return false; } if (!_summary_data.initialize(mr)) { ! vm_shutdown_during_initialization( ! err_msg("Unable to allocate " SIZE_FORMAT " byte tables " ! "for parallel garbage collection for the requested " SIZE_FORMAT " byte heap size.", ! _summary_data.reserved_byte_size(), mr.byte_size())); return false; } return true; }