mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-21 11:34:38 +02:00
Merge
This commit is contained in:
commit
41463d1d3a
81 changed files with 2355 additions and 948 deletions
|
@ -107,7 +107,7 @@ void CMBitMapRO::mostly_disjoint_range_union(BitMap* from_bitmap,
|
|||
#ifndef PRODUCT
|
||||
bool CMBitMapRO::covers(ReservedSpace rs) const {
|
||||
// assert(_bm.map() == _virtual_space.low(), "map inconsistency");
|
||||
assert(((size_t)_bm.size() * (1 << _shifter)) == _bmWordSize,
|
||||
assert(((size_t)_bm.size() * (size_t)(1 << _shifter)) == _bmWordSize,
|
||||
"size inconsistency");
|
||||
return _bmStartWord == (HeapWord*)(rs.base()) &&
|
||||
_bmWordSize == rs.size()>>LogHeapWordSize;
|
||||
|
|
|
@ -1422,9 +1422,34 @@ jint G1CollectedHeap::initialize() {
|
|||
// Reserve the maximum.
|
||||
PermanentGenerationSpec* pgs = collector_policy()->permanent_generation();
|
||||
// Includes the perm-gen.
|
||||
|
||||
const size_t total_reserved = max_byte_size + pgs->max_size();
|
||||
char* addr = Universe::preferred_heap_base(total_reserved, Universe::UnscaledNarrowOop);
|
||||
|
||||
ReservedSpace heap_rs(max_byte_size + pgs->max_size(),
|
||||
HeapRegion::GrainBytes,
|
||||
false /*ism*/);
|
||||
false /*ism*/, addr);
|
||||
|
||||
if (UseCompressedOops) {
|
||||
if (addr != NULL && !heap_rs.is_reserved()) {
|
||||
// Failed to reserve at specified address - the requested memory
|
||||
// region is taken already, for example, by 'java' launcher.
|
||||
// Try again to reserver heap higher.
|
||||
addr = Universe::preferred_heap_base(total_reserved, Universe::ZeroBasedNarrowOop);
|
||||
ReservedSpace heap_rs0(total_reserved, HeapRegion::GrainBytes,
|
||||
false /*ism*/, addr);
|
||||
if (addr != NULL && !heap_rs0.is_reserved()) {
|
||||
// Failed to reserve at specified address again - give up.
|
||||
addr = Universe::preferred_heap_base(total_reserved, Universe::HeapBasedNarrowOop);
|
||||
assert(addr == NULL, "");
|
||||
ReservedSpace heap_rs1(total_reserved, HeapRegion::GrainBytes,
|
||||
false /*ism*/, addr);
|
||||
heap_rs = heap_rs1;
|
||||
} else {
|
||||
heap_rs = heap_rs0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!heap_rs.is_reserved()) {
|
||||
vm_exit_during_initialization("Could not reserve enough space for object heap");
|
||||
|
|
|
@ -508,7 +508,7 @@ OtherRegionsTable::OtherRegionsTable(HeapRegion* hr) :
|
|||
typedef PosParPRT* PosParPRTPtr;
|
||||
if (_max_fine_entries == 0) {
|
||||
assert(_mod_max_fine_entries_mask == 0, "Both or none.");
|
||||
_max_fine_entries = (1 << G1LogRSRegionEntries);
|
||||
_max_fine_entries = (size_t)(1 << G1LogRSRegionEntries);
|
||||
_mod_max_fine_entries_mask = _max_fine_entries - 1;
|
||||
#if SAMPLE_FOR_EVICTION
|
||||
assert(_fine_eviction_sample_size == 0
|
||||
|
|
|
@ -104,12 +104,38 @@ jint ParallelScavengeHeap::initialize() {
|
|||
og_min_size, og_max_size,
|
||||
yg_min_size, yg_max_size);
|
||||
|
||||
const size_t total_reserved = pg_max_size + og_max_size + yg_max_size;
|
||||
char* addr = Universe::preferred_heap_base(total_reserved, Universe::UnscaledNarrowOop);
|
||||
|
||||
// The main part of the heap (old gen + young gen) can often use a larger page
|
||||
// size than is needed or wanted for the perm gen. Use the "compound
|
||||
// alignment" ReservedSpace ctor to avoid having to use the same page size for
|
||||
// all gens.
|
||||
|
||||
ReservedHeapSpace heap_rs(pg_max_size, pg_align, og_max_size + yg_max_size,
|
||||
og_align);
|
||||
og_align, addr);
|
||||
|
||||
if (UseCompressedOops) {
|
||||
if (addr != NULL && !heap_rs.is_reserved()) {
|
||||
// Failed to reserve at specified address - the requested memory
|
||||
// region is taken already, for example, by 'java' launcher.
|
||||
// Try again to reserver heap higher.
|
||||
addr = Universe::preferred_heap_base(total_reserved, Universe::ZeroBasedNarrowOop);
|
||||
ReservedHeapSpace heap_rs0(pg_max_size, pg_align, og_max_size + yg_max_size,
|
||||
og_align, addr);
|
||||
if (addr != NULL && !heap_rs0.is_reserved()) {
|
||||
// Failed to reserve at specified address again - give up.
|
||||
addr = Universe::preferred_heap_base(total_reserved, Universe::HeapBasedNarrowOop);
|
||||
assert(addr == NULL, "");
|
||||
ReservedHeapSpace heap_rs1(pg_max_size, pg_align, og_max_size + yg_max_size,
|
||||
og_align, addr);
|
||||
heap_rs = heap_rs1;
|
||||
} else {
|
||||
heap_rs = heap_rs0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
os::trace_page_sizes("ps perm", pg_min_size, pg_max_size, pg_page_sz,
|
||||
heap_rs.base(), pg_max_size);
|
||||
os::trace_page_sizes("ps main", og_min_size + yg_min_size,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue