34 #if INCLUDE_ALL_GCS |
34 #if INCLUDE_ALL_GCS |
35 #include "gc/cms/concurrentMarkSweepGeneration.hpp" |
35 #include "gc/cms/concurrentMarkSweepGeneration.hpp" |
36 #include "gc/cms/parNewGeneration.hpp" |
36 #include "gc/cms/parNewGeneration.hpp" |
37 #endif // INCLUDE_ALL_GCS |
37 #endif // INCLUDE_ALL_GCS |
38 |
38 |
39 Generation* GenerationSpec::init(ReservedSpace rs, int level, |
39 Generation* GenerationSpec::init(ReservedSpace rs, GenRemSet* remset) { |
40 GenRemSet* remset) { |
|
41 switch (name()) { |
40 switch (name()) { |
42 case Generation::DefNew: |
41 case Generation::DefNew: |
43 return new DefNewGeneration(rs, init_size(), level); |
42 return new DefNewGeneration(rs, init_size()); |
44 |
43 |
45 case Generation::MarkSweepCompact: |
44 case Generation::MarkSweepCompact: |
46 return new TenuredGeneration(rs, init_size(), level, remset); |
45 return new TenuredGeneration(rs, init_size(), remset); |
47 |
46 |
48 #if INCLUDE_ALL_GCS |
47 #if INCLUDE_ALL_GCS |
49 case Generation::ParNew: |
48 case Generation::ParNew: |
50 return new ParNewGeneration(rs, init_size(), level); |
49 return new ParNewGeneration(rs, init_size()); |
51 |
50 |
52 case Generation::ConcurrentMarkSweep: { |
51 case Generation::ConcurrentMarkSweep: { |
53 assert(UseConcMarkSweepGC, "UseConcMarkSweepGC should be set"); |
52 assert(UseConcMarkSweepGC, "UseConcMarkSweepGC should be set"); |
54 CardTableRS* ctrs = remset->as_CardTableRS(); |
53 CardTableRS* ctrs = remset->as_CardTableRS(); |
55 if (ctrs == NULL) { |
54 if (ctrs == NULL) { |
59 // The constructor creates the CMSCollector if needed, |
58 // The constructor creates the CMSCollector if needed, |
60 // else registers with an existing CMSCollector |
59 // else registers with an existing CMSCollector |
61 |
60 |
62 ConcurrentMarkSweepGeneration* g = NULL; |
61 ConcurrentMarkSweepGeneration* g = NULL; |
63 g = new ConcurrentMarkSweepGeneration(rs, |
62 g = new ConcurrentMarkSweepGeneration(rs, |
64 init_size(), level, ctrs, UseCMSAdaptiveFreeLists, |
63 init_size(), ctrs, UseCMSAdaptiveFreeLists, |
65 (FreeBlockDictionary<FreeChunk>::DictionaryChoice)CMSDictionaryChoice); |
64 (FreeBlockDictionary<FreeChunk>::DictionaryChoice)CMSDictionaryChoice); |
66 |
65 |
67 g->initialize_performance_counters(); |
66 g->initialize_performance_counters(); |
68 |
67 |
69 return g; |
68 return g; |