< prev index next >

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

Print this page
rev 7526 : 8066875: VirtualSpace does not use large pages (01)


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




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


< prev index next >