385 const size_t bytes = align_size_up(raw_bytes, MAX2(page_sz, granularity));
386
387 const size_t rs_align = page_sz == (size_t) os::vm_page_size() ? 0 :
388 MAX2(page_sz, granularity);
389 ReservedSpace rs(bytes, rs_align, rs_align > 0);
390 os::trace_page_sizes("par compact", raw_bytes, raw_bytes, page_sz, rs.base(),
391 rs.size());
392
393 MemTracker::record_virtual_memory_type((address)rs.base(), mtGC);
394
395 PSVirtualSpace* vspace = new PSVirtualSpace(rs, page_sz);
396 if (vspace != 0) {
397 if (vspace->expand_by(bytes)) {
398 return vspace;
399 }
400 delete vspace;
401 // Release memory reserved in the space.
402 rs.release();
403 }
404
405 return 0;
406 }
407
408 bool ParallelCompactData::initialize_region_data(size_t region_size)
409 {
410 const size_t count = (region_size + RegionSizeOffsetMask) >> Log2RegionSize;
411 _region_vspace = create_vspace(count, sizeof(RegionData));
412 if (_region_vspace != 0) {
413 _region_data = (RegionData*)_region_vspace->reserved_low_addr();
414 _region_count = count;
415 return true;
416 }
417 return false;
418 }
419
420 void ParallelCompactData::clear()
421 {
422 memset(_region_data, 0, _region_vspace->committed_size());
423 }
424
|
385 const size_t bytes = align_size_up(raw_bytes, MAX2(page_sz, granularity));
386
387 const size_t rs_align = page_sz == (size_t) os::vm_page_size() ? 0 :
388 MAX2(page_sz, granularity);
389 ReservedSpace rs(bytes, rs_align, rs_align > 0);
390 os::trace_page_sizes("par compact", raw_bytes, raw_bytes, page_sz, rs.base(),
391 rs.size());
392
393 MemTracker::record_virtual_memory_type((address)rs.base(), mtGC);
394
395 PSVirtualSpace* vspace = new PSVirtualSpace(rs, page_sz);
396 if (vspace != 0) {
397 if (vspace->expand_by(bytes)) {
398 return vspace;
399 }
400 delete vspace;
401 // Release memory reserved in the space.
402 rs.release();
403 }
404
405 gclog_or_tty->print_cr("Allocation of " SIZE_FORMAT " bytes failed.", bytes);
406 return 0;
407 }
408
409 bool ParallelCompactData::initialize_region_data(size_t region_size)
410 {
411 const size_t count = (region_size + RegionSizeOffsetMask) >> Log2RegionSize;
412 _region_vspace = create_vspace(count, sizeof(RegionData));
413 if (_region_vspace != 0) {
414 _region_data = (RegionData*)_region_vspace->reserved_low_addr();
415 _region_count = count;
416 return true;
417 }
418 return false;
419 }
420
421 void ParallelCompactData::clear()
422 {
423 memset(_region_data, 0, _region_vspace->committed_size());
424 }
425
|