< prev index next >

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

Print this page
rev 7181 : 8049864: TestParallelHeapSizeFlags fails with unexpected heap size
Reviewed-by: sjohanss, jmasa
rev 7183 : 8066875: VirtualSpace does not use large pages
Reviewed-by: stefank, tschatzl, anoll, thartmann


 384 
 385 bool ParallelCompactData::initialize(MemRegion covered_region)
 386 {
 387   _region_start = covered_region.start();
 388   const size_t region_size = covered_region.word_size();
 389   DEBUG_ONLY(_region_end = _region_start + region_size;)
 390 
 391   assert(region_align_down(_region_start) == _region_start,
 392          "region start not aligned");
 393   assert((region_size & RegionSizeOffsetMask) == 0,
 394          "region size not a multiple of RegionSize");
 395 
 396   bool result = initialize_region_data(region_size) && initialize_block_data();
 397   return result;
 398 }
 399 
 400 PSVirtualSpace*
 401 ParallelCompactData::create_vspace(size_t count, size_t element_size)
 402 {
 403   const size_t raw_bytes = count * element_size;
 404   const size_t page_sz = os::page_size_for_region(raw_bytes, 10);
 405   const size_t granularity = os::vm_allocation_granularity();
 406   _reserved_byte_size = align_size_up(raw_bytes, MAX2(page_sz, granularity));
 407 
 408   const size_t rs_align = page_sz == (size_t) os::vm_page_size() ? 0 :
 409     MAX2(page_sz, granularity);
 410   ReservedSpace rs(_reserved_byte_size, rs_align, rs_align > 0);
 411   os::trace_page_sizes("par compact", raw_bytes, raw_bytes, page_sz, rs.base(),
 412                        rs.size());
 413 
 414   MemTracker::record_virtual_memory_type((address)rs.base(), mtGC);
 415 
 416   PSVirtualSpace* vspace = new PSVirtualSpace(rs, page_sz);
 417   if (vspace != 0) {
 418     if (vspace->expand_by(_reserved_byte_size)) {
 419       return vspace;
 420     }
 421     delete vspace;
 422     // Release memory reserved in the space.
 423     rs.release();
 424   }




 384 
 385 bool ParallelCompactData::initialize(MemRegion covered_region)
 386 {
 387   _region_start = covered_region.start();
 388   const size_t region_size = covered_region.word_size();
 389   DEBUG_ONLY(_region_end = _region_start + region_size;)
 390 
 391   assert(region_align_down(_region_start) == _region_start,
 392          "region start not aligned");
 393   assert((region_size & RegionSizeOffsetMask) == 0,
 394          "region size not a multiple of RegionSize");
 395 
 396   bool result = initialize_region_data(region_size) && initialize_block_data();
 397   return result;
 398 }
 399 
 400 PSVirtualSpace*
 401 ParallelCompactData::create_vspace(size_t count, size_t element_size)
 402 {
 403   const size_t raw_bytes = count * element_size;
 404   const size_t page_sz = os::page_size_for_region_aligned(raw_bytes, 10);
 405   const size_t granularity = os::vm_allocation_granularity();
 406   _reserved_byte_size = align_size_up(raw_bytes, MAX2(page_sz, granularity));
 407 
 408   const size_t rs_align = page_sz == (size_t) os::vm_page_size() ? 0 :
 409     MAX2(page_sz, granularity);
 410   ReservedSpace rs(_reserved_byte_size, rs_align, rs_align > 0);
 411   os::trace_page_sizes("par compact", raw_bytes, raw_bytes, page_sz, rs.base(),
 412                        rs.size());
 413 
 414   MemTracker::record_virtual_memory_type((address)rs.base(), mtGC);
 415 
 416   PSVirtualSpace* vspace = new PSVirtualSpace(rs, page_sz);
 417   if (vspace != 0) {
 418     if (vspace->expand_by(_reserved_byte_size)) {
 419       return vspace;
 420     }
 421     delete vspace;
 422     // Release memory reserved in the space.
 423     rs.release();
 424   }


< prev index next >