< prev index next >

src/hotspot/share/gc/g1/g1Arguments.cpp

Print this page

        

*** 23,40 **** */ #include "precompiled.hpp" #include "gc/g1/g1Arguments.hpp" #include "gc/g1/g1CollectedHeap.inline.hpp" - #include "gc/g1/g1CollectorPolicy.hpp" #include "gc/g1/g1HeapVerifier.hpp" #include "gc/g1/heapRegion.hpp" #include "gc/shared/gcArguments.inline.hpp" #include "runtime/globals.hpp" #include "runtime/globals_extension.hpp" #include "runtime/vm_version.hpp" size_t G1Arguments::conservative_max_heap_alignment() { return HeapRegion::max_region_size(); } void G1Arguments::initialize_flags() { --- 23,68 ---- */ #include "precompiled.hpp" #include "gc/g1/g1Arguments.hpp" #include "gc/g1/g1CollectedHeap.inline.hpp" #include "gc/g1/g1HeapVerifier.hpp" #include "gc/g1/heapRegion.hpp" + #include "gc/g1/heapRegionRemSet.hpp" #include "gc/shared/gcArguments.inline.hpp" #include "runtime/globals.hpp" #include "runtime/globals_extension.hpp" #include "runtime/vm_version.hpp" + G1Settings G1Arguments::initialize_heap_flags() { + G1Settings s; + + GCArguments::initialize_heap_flags(s); + + // Set up the region size and associated fields. Given that the + // policy is created before the heap, we have to set this up here, + // so it's done as soon as possible. + + // It would have been natural to pass initial_heap_byte_size() and + // max_heap_byte_size() to setup_heap_region_size() but those have + // not been set up at this point since they should be aligned with + // the region size. So, there is a circular dependency here. We base + // the region size on the heap size, but the heap size should be + // aligned with the region size. To get around this we use the + // unaligned values for the heap. + + assert(InitialHeapSize == s._initial_heap_byte_size, "Sanity"); + assert(MaxHeapSize == s._max_heap_byte_size, "Sanity"); + + HeapRegion::setup_heap_region_size(InitialHeapSize, MaxHeapSize); + HeapRegionRemSet::setup_remset_size(); + + GCArguments::initialize_size_info(s); + + return s; + } + size_t G1Arguments::conservative_max_heap_alignment() { return HeapRegion::max_region_size(); } void G1Arguments::initialize_flags() {
*** 107,113 **** // Always return true because we want to parse all values. return true; } CollectedHeap* G1Arguments::create_heap() { ! return create_heap_with_policy<G1CollectedHeap, G1CollectorPolicy>(); } --- 135,141 ---- // Always return true because we want to parse all values. return true; } CollectedHeap* G1Arguments::create_heap() { ! return new G1CollectedHeap(initialize_heap_flags()); }
< prev index next >