18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #include "precompiled.hpp"
26 #include "gc_implementation/parallelScavenge/adjoiningGenerations.hpp"
27 #include "gc_implementation/parallelScavenge/adjoiningVirtualSpaces.hpp"
28 #include "gc_implementation/parallelScavenge/generationSizer.hpp"
29 #include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
30
31 // If boundary moving is being used, create the young gen and old
32 // gen with ASPSYoungGen and ASPSOldGen, respectively. Revert to
33 // the old behavior otherwise (with PSYoungGen and PSOldGen).
34
35 AdjoiningGenerations::AdjoiningGenerations(ReservedSpace old_young_rs,
36 GenerationSizer* policy,
37 size_t alignment) :
38 _virtual_spaces(old_young_rs, policy->min_gen1_size(),
39 policy->min_gen0_size(), alignment) {
40 size_t init_low_byte_size = policy->initial_gen1_size();
41 size_t min_low_byte_size = policy->min_gen1_size();
42 size_t max_low_byte_size = policy->max_gen1_size();
43 size_t init_high_byte_size = policy->initial_gen0_size();
44 size_t min_high_byte_size = policy->min_gen0_size();
45 size_t max_high_byte_size = policy->max_gen0_size();
46
47 assert(min_low_byte_size <= init_low_byte_size &&
48 init_low_byte_size <= max_low_byte_size, "Parameter check");
49 assert(min_high_byte_size <= init_high_byte_size &&
50 init_high_byte_size <= max_high_byte_size, "Parameter check");
51 // Create the generations differently based on the option to
52 // move the boundary.
53 if (UseAdaptiveGCBoundary) {
54 // Initialize the adjoining virtual spaces. Then pass the
55 // a virtual to each generation for initialization of the
56 // generation.
57
58 // Does the actual creation of the virtual spaces
59 _virtual_spaces.initialize(max_low_byte_size,
60 init_low_byte_size,
61 init_high_byte_size);
62
63 // Place the young gen at the high end. Passes in the virtual space.
64 _young_gen = new ASPSYoungGen(_virtual_spaces.high(),
65 _virtual_spaces.high()->committed_size(),
|
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #include "precompiled.hpp"
26 #include "gc_implementation/parallelScavenge/adjoiningGenerations.hpp"
27 #include "gc_implementation/parallelScavenge/adjoiningVirtualSpaces.hpp"
28 #include "gc_implementation/parallelScavenge/generationSizer.hpp"
29 #include "gc_implementation/parallelScavenge/parallelScavengeHeap.hpp"
30
31 // If boundary moving is being used, create the young gen and old
32 // gen with ASPSYoungGen and ASPSOldGen, respectively. Revert to
33 // the old behavior otherwise (with PSYoungGen and PSOldGen).
34
35 AdjoiningGenerations::AdjoiningGenerations(ReservedSpace old_young_rs,
36 GenerationSizer* policy,
37 size_t alignment) :
38 _virtual_spaces(old_young_rs, policy->min_old_size(),
39 policy->min_young_size(), alignment) {
40 size_t init_low_byte_size = policy->initial_old_size();
41 size_t min_low_byte_size = policy->min_old_size();
42 size_t max_low_byte_size = policy->max_old_size();
43 size_t init_high_byte_size = policy->initial_young_size();
44 size_t min_high_byte_size = policy->min_young_size();
45 size_t max_high_byte_size = policy->max_young_size();
46
47 assert(min_low_byte_size <= init_low_byte_size &&
48 init_low_byte_size <= max_low_byte_size, "Parameter check");
49 assert(min_high_byte_size <= init_high_byte_size &&
50 init_high_byte_size <= max_high_byte_size, "Parameter check");
51 // Create the generations differently based on the option to
52 // move the boundary.
53 if (UseAdaptiveGCBoundary) {
54 // Initialize the adjoining virtual spaces. Then pass the
55 // a virtual to each generation for initialization of the
56 // generation.
57
58 // Does the actual creation of the virtual spaces
59 _virtual_spaces.initialize(max_low_byte_size,
60 init_low_byte_size,
61 init_high_byte_size);
62
63 // Place the young gen at the high end. Passes in the virtual space.
64 _young_gen = new ASPSYoungGen(_virtual_spaces.high(),
65 _virtual_spaces.high()->committed_size(),
|