< prev index next >
src/hotspot/share/gc/parallel/adjoiningGenerations.cpp
Print this page
rev 52004 : webrev.02
@@ -38,12 +38,12 @@
// the old behavior otherwise (with PSYoungGen and PSOldGen).
AdjoiningGenerations::AdjoiningGenerations(ReservedSpace old_young_rs,
GenerationSizer* policy,
size_t alignment) :
- _virtual_spaces(old_young_rs, policy->min_old_size(),
- policy->min_young_size(), alignment) {
+ _virtual_spaces(new AdjoiningVirtualSpaces(old_young_rs, policy->min_old_size(),
+ policy->min_young_size(), alignment)) {
size_t init_low_byte_size = policy->initial_old_size();
size_t min_low_byte_size = policy->min_old_size();
size_t max_low_byte_size = policy->max_old_size();
size_t init_high_byte_size = policy->initial_young_size();
size_t min_high_byte_size = policy->min_young_size();
@@ -59,25 +59,25 @@
// Initialize the adjoining virtual spaces. Then pass the
// a virtual to each generation for initialization of the
// generation.
// Does the actual creation of the virtual spaces
- _virtual_spaces.initialize(max_low_byte_size,
+ _virtual_spaces->initialize(max_low_byte_size,
init_low_byte_size,
init_high_byte_size);
// Place the young gen at the high end. Passes in the virtual space.
- _young_gen = new ASPSYoungGen(_virtual_spaces.high(),
- _virtual_spaces.high()->committed_size(),
+ _young_gen = new ASPSYoungGen(_virtual_spaces->high(),
+ _virtual_spaces->high()->committed_size(),
min_high_byte_size,
- _virtual_spaces.high_byte_size_limit());
+ _virtual_spaces->high_byte_size_limit());
// Place the old gen at the low end. Passes in the virtual space.
- _old_gen = new ASPSOldGen(_virtual_spaces.low(),
- _virtual_spaces.low()->committed_size(),
+ _old_gen = new ASPSOldGen(_virtual_spaces->low(),
+ _virtual_spaces->low()->committed_size(),
min_low_byte_size,
- _virtual_spaces.low_byte_size_limit(),
+ _virtual_spaces->low_byte_size_limit(),
"old", 1);
young_gen()->initialize_work();
assert(young_gen()->reserved().byte_size() <= young_gen()->gen_size_limit(),
"Consistency check");
@@ -90,12 +90,13 @@
assert(old_young_rs.size() >= old_gen()->gen_size_limit(),
"Consistency check");
} else {
// Layout the reserved space for the generations.
+ // If OldGen is allocated on nv-dimm, we need to split the reservation (this is required for windows).
ReservedSpace old_rs =
- virtual_spaces()->reserved_space().first_part(max_low_byte_size);
+ virtual_spaces()->reserved_space().first_part(max_low_byte_size, AllocateOldGenAt != NULL /* split */);
ReservedSpace heap_rs =
virtual_spaces()->reserved_space().last_part(max_low_byte_size);
ReservedSpace young_rs = heap_rs.first_part(max_high_byte_size);
assert(young_rs.size() == heap_rs.size(), "Didn't reserve all of the heap");
@@ -115,10 +116,12 @@
_old_gen->initialize(old_rs, alignment, "old", 1);
assert(old_gen()->gen_size_limit() == old_rs.size(), "Consistency check");
}
}
+AdjoiningGenerations::AdjoiningGenerations() { }
+
size_t AdjoiningGenerations::reserved_byte_size() {
return virtual_spaces()->reserved_space().size();
}
void log_before_expansion(bool old, size_t expand_in_bytes, size_t change_in_bytes, size_t max_size) {
< prev index next >