< prev index next >

src/share/vm/memory/genCollectedHeap.cpp

Print this page
rev 7974 : imported patch genspecs

*** 82,112 **** } jint GenCollectedHeap::initialize() { CollectedHeap::pre_initialize(); - int i; _n_gens = gen_policy()->number_of_generations(); assert(_n_gens == 2, "There is no support for more than two generations"); // While there are no constraints in the GC code that HeapWordSize // be any particular value, there are multiple other areas in the // system which believe this to be true (e.g. oop->object_size in some // cases incorrectly returns the size in wordSize units rather than // HeapWordSize). guarantee(HeapWordSize == wordSize, "HeapWordSize must equal wordSize"); - // The heap must be at least as aligned as generations. - size_t gen_alignment = Generation::GenGrain; - - _gen_specs = gen_policy()->generations(); - - // Make sure the sizes are all aligned. - for (i = 0; i < _n_gens; i++) { - _gen_specs[i]->align(gen_alignment); - } - // Allocate space for the heap. char* heap_address; ReservedSpace heap_rs; --- 82,101 ----
*** 125,140 **** _rem_set = collector_policy()->create_rem_set(reserved_region()); set_barrier_set(rem_set()->bs()); _gch = this; ! ReservedSpace young_rs = heap_rs.first_part(_gen_specs[0]->max_size(), false, false); ! _young_gen = _gen_specs[0]->init(young_rs, 0, rem_set()); ! heap_rs = heap_rs.last_part(_gen_specs[0]->max_size()); ! ReservedSpace old_rs = heap_rs.first_part(_gen_specs[1]->max_size(), false, false); ! _old_gen = _gen_specs[1]->init(old_rs, 1, rem_set()); clear_incremental_collection_failed(); #if INCLUDE_ALL_GCS // If we are running CMS, create the collector responsible // for collecting the CMS generations. --- 114,129 ---- _rem_set = collector_policy()->create_rem_set(reserved_region()); set_barrier_set(rem_set()->bs()); _gch = this; ! ReservedSpace young_rs = heap_rs.first_part(gen_policy()->young_gen_spec()->max_size(), false, false); ! _young_gen = gen_policy()->young_gen_spec()->init(young_rs, 0, rem_set()); ! heap_rs = heap_rs.last_part(gen_policy()->young_gen_spec()->max_size()); ! ReservedSpace old_rs = heap_rs.first_part(gen_policy()->old_gen_spec()->max_size(), false, false); ! _old_gen = gen_policy()->old_gen_spec()->init(old_rs, 1, rem_set()); clear_incremental_collection_failed(); #if INCLUDE_ALL_GCS // If we are running CMS, create the collector responsible // for collecting the CMS generations.
*** 151,172 **** ReservedSpace* heap_rs){ const char overflow_msg[] = "The size of the object heap + VM data exceeds " "the maximum representable size"; // Now figure out the total size. ! size_t total_reserved = 0; ! const size_t pageSize = UseLargePages ? ! os::large_page_size() : os::vm_page_size(); ! assert(alignment % pageSize == 0, "Must be"); ! for (int i = 0; i < _n_gens; i++) { ! total_reserved += _gen_specs[i]->max_size(); ! if (total_reserved < _gen_specs[i]->max_size()) { vm_exit_during_initialization(overflow_msg); } - } assert(total_reserved % alignment == 0, err_msg("Gen size; total_reserved=" SIZE_FORMAT ", alignment=" SIZE_FORMAT, total_reserved, alignment)); *heap_rs = Universe::reserve_heap(total_reserved, alignment); --- 140,160 ---- ReservedSpace* heap_rs){ const char overflow_msg[] = "The size of the object heap + VM data exceeds " "the maximum representable size"; // Now figure out the total size. ! const size_t pageSize = UseLargePages ? os::large_page_size() : os::vm_page_size(); assert(alignment % pageSize == 0, "Must be"); ! GenerationSpec* young_spec = gen_policy()->young_gen_spec(); ! GenerationSpec* old_spec = gen_policy()->old_gen_spec(); ! ! size_t total_reserved = young_spec->max_size() + old_spec->max_size(); ! if (total_reserved < young_spec->max_size() || ! total_reserved < old_spec->max_size()) { vm_exit_during_initialization(overflow_msg); } assert(total_reserved % alignment == 0, err_msg("Gen size; total_reserved=" SIZE_FORMAT ", alignment=" SIZE_FORMAT, total_reserved, alignment)); *heap_rs = Universe::reserve_heap(total_reserved, alignment);
< prev index next >