Merge
This commit is contained in:
commit
0c4933f5b0
@ -309,7 +309,8 @@ G1CollectorPolicy::G1CollectorPolicy() :
|
||||
|
||||
void G1CollectorPolicy::initialize_flags() {
|
||||
set_min_alignment(HeapRegion::GrainBytes);
|
||||
set_max_alignment(GenRemSet::max_alignment_constraint(rem_set_name()));
|
||||
size_t card_table_alignment = GenRemSet::max_alignment_constraint(rem_set_name());
|
||||
set_max_alignment(MAX2(card_table_alignment, min_alignment()));
|
||||
if (SurvivorRatio < 1) {
|
||||
vm_exit_during_initialization("Invalid survivor ratio specified");
|
||||
}
|
||||
|
@ -48,6 +48,13 @@
|
||||
// CollectorPolicy methods.
|
||||
|
||||
void CollectorPolicy::initialize_flags() {
|
||||
assert(max_alignment() >= min_alignment(),
|
||||
err_msg("max_alignment: " SIZE_FORMAT " less than min_alignment: " SIZE_FORMAT,
|
||||
max_alignment(), min_alignment()));
|
||||
assert(max_alignment() % min_alignment() == 0,
|
||||
err_msg("max_alignment: " SIZE_FORMAT " not aligned by min_alignment: " SIZE_FORMAT,
|
||||
max_alignment(), min_alignment()));
|
||||
|
||||
if (MetaspaceSize > MaxMetaspaceSize) {
|
||||
MaxMetaspaceSize = MetaspaceSize;
|
||||
}
|
||||
@ -201,9 +208,6 @@ void GenCollectorPolicy::initialize_flags() {
|
||||
// All sizes must be multiples of the generation granularity.
|
||||
set_min_alignment((uintx) Generation::GenGrain);
|
||||
set_max_alignment(compute_max_alignment());
|
||||
assert(max_alignment() >= min_alignment() &&
|
||||
max_alignment() % min_alignment() == 0,
|
||||
"invalid alignment constraints");
|
||||
|
||||
CollectorPolicy::initialize_flags();
|
||||
|
||||
|
@ -747,16 +747,16 @@ void Arguments::add_string(char*** bldarray, int* count, const char* arg) {
|
||||
return;
|
||||
}
|
||||
|
||||
int index = *count;
|
||||
int new_count = *count + 1;
|
||||
|
||||
// expand the array and add arg to the last element
|
||||
(*count)++;
|
||||
if (*bldarray == NULL) {
|
||||
*bldarray = NEW_C_HEAP_ARRAY(char*, *count, mtInternal);
|
||||
*bldarray = NEW_C_HEAP_ARRAY(char*, new_count, mtInternal);
|
||||
} else {
|
||||
*bldarray = REALLOC_C_HEAP_ARRAY(char*, *bldarray, *count, mtInternal);
|
||||
*bldarray = REALLOC_C_HEAP_ARRAY(char*, *bldarray, new_count, mtInternal);
|
||||
}
|
||||
(*bldarray)[index] = strdup(arg);
|
||||
(*bldarray)[*count] = strdup(arg);
|
||||
*count = new_count;
|
||||
}
|
||||
|
||||
void Arguments::build_jvm_args(const char* arg) {
|
||||
|
36
hotspot/test/gc/g1/TestRegionAlignment.java
Normal file
36
hotspot/test/gc/g1/TestRegionAlignment.java
Normal file
@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test TestRegionAlignment.java
|
||||
* @bug 8013791
|
||||
* @summary Make sure that G1 ergonomics pick a heap size that is aligned with the region size
|
||||
* @run main/othervm -XX:+UseG1GC -XX:G1HeapRegionSize=32m -XX:MaxRAM=555m TestRegionAlignment
|
||||
*
|
||||
* When G1 ergonomically picks a maximum heap size it must be aligned to the region size.
|
||||
* This test tries to get the VM to pick a small and unaligned heap size (by using MaxRAM=555) and a
|
||||
* large region size (by using -XX:G1HeapRegionSize=32m). This will fail without the fix for 8013791.
|
||||
*/
|
||||
public class TestRegionAlignment {
|
||||
public static void main(String[] args) { }
|
||||
}
|
Loading…
Reference in New Issue
Block a user