src/share/vm/memory/genCollectedHeap.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/share/vm/memory/genCollectedHeap.cpp	Fri Oct 17 15:34:52 2014
--- new/src/share/vm/memory/genCollectedHeap.cpp	Fri Oct 17 15:34:52 2014

*** 93,112 **** --- 93,102 ---- // 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; size_t total_reserved = 0; int n_covered_regions = 0;
*** 128,144 **** --- 118,135 ---- _rem_set = collector_policy()->create_rem_set(reserved_region(), n_covered_regions); 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()); ! heap_rs = heap_rs.last_part(_gen_specs[1]->max_size()); ! 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()); ! heap_rs = heap_rs.last_part(gen_policy()->old_gen_spec()->max_size()); + clear_incremental_collection_failed(); #if INCLUDE_ALL_GCS // If we are running CMS, create the collector responsible // for collecting the CMS generations.
*** 157,184 **** --- 148,173 ---- 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; int n_covered_regions = 0; const size_t pageSize = UseLargePages ? os::large_page_size() : os::vm_page_size(); ! 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()) { + size_t total_reserved = gen_policy()->young_gen_spec()->max_size() + ! gen_policy()->old_gen_spec()->max_size(); + if (total_reserved < gen_policy()->young_gen_spec()->max_size() || + total_reserved < gen_policy()->old_gen_spec()->max_size()) { vm_exit_during_initialization(overflow_msg); } n_covered_regions += _gen_specs[i]->n_covered_regions(); } assert(total_reserved % alignment == 0, err_msg("Gen size; total_reserved=" SIZE_FORMAT ", alignment=" SIZE_FORMAT, total_reserved, alignment)); + int n_covered_regions = gen_policy()->young_gen_spec()->n_covered_regions() + + gen_policy()->old_gen_spec()->n_covered_regions(); + // Needed until the cardtable is fixed to have the right number // of covered regions. n_covered_regions += 2; *_total_reserved = total_reserved;

src/share/vm/memory/genCollectedHeap.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File