# HG changeset patch # User goetz # Date 1422475155 -3600 # Node ID 1663bb306aaf04a5645eba4d5bfce601db4a1ec9 # Parent b59d6dde575bdfa29eb6a7b2fcd5812717270995 8071822: [TEST_BUG] Adapt collectorPolicy internal tests to support 64K pages diff --git a/src/share/vm/memory/collectorPolicy.cpp b/src/share/vm/memory/collectorPolicy.cpp --- a/src/share/vm/memory/collectorPolicy.cpp +++ b/src/share/vm/memory/collectorPolicy.cpp @@ -965,32 +965,39 @@ } static void test_old_size() { - size_t flag_value; + size_t flag_value; - save_flags(); + save_flags(); - // If OldSize is set on the command line, it should be used - // for both min and initial old size if less than min heap. - flag_value = 20 * M; - set_basic_flag_values(); - FLAG_SET_CMDLINE(uintx, OldSize, flag_value); - verify_old_min(flag_value); + // If OldSize is set on the command line, it should be used + // for both min and initial old size if less than min heap. + flag_value = 20 * M; + set_basic_flag_values(); + FLAG_SET_CMDLINE(uintx, OldSize, flag_value); + verify_old_min(flag_value); - set_basic_flag_values(); - FLAG_SET_CMDLINE(uintx, OldSize, flag_value); - verify_old_initial(flag_value); + set_basic_flag_values(); + FLAG_SET_CMDLINE(uintx, OldSize, flag_value); + // Calculate what we expect the flag to be. + size_t expected_old_initial = + align_size_up(InitialHeapSize, CollectorPolicy::compute_heap_alignment()) - MaxNewSize; + verify_old_initial(expected_old_initial); - // If MaxNewSize is large, the maximum OldSize will be less than - // what's requested on the command line and it should be reset - // ergonomically. - flag_value = 30 * M; - set_basic_flag_values(); - FLAG_SET_CMDLINE(uintx, OldSize, flag_value); - FLAG_SET_CMDLINE(uintx, MaxNewSize, 170*M); - // Calculate what we expect the flag to be. - flag_value = MaxHeapSize - MaxNewSize; - verify_old_initial(flag_value); - + // If MaxNewSize is large, the maximum OldSize will be less than + // what's requested on the command line and it should be reset + // ergonomically. + // We intentionally set MaxNewSize + OldSize > MaxHeapSize. + set_basic_flag_values(); + flag_value = 30 * M; + FLAG_SET_CMDLINE(uintx, OldSize, flag_value); + size_t new_size_value = + align_size_up(MaxHeapSize, CollectorPolicy::compute_heap_alignment()) - flag_value + 20*M; + FLAG_SET_CMDLINE(uintx, MaxNewSize, new_size_value); + // Calculate what we expect the flag to be. + expected_old_initial = + align_size_up(MaxHeapSize, CollectorPolicy::compute_heap_alignment()) - MaxNewSize; + verify_old_initial(expected_old_initial); + restore_flags(); } static void verify_young_min(size_t expected) { @@ -1011,6 +1018,12 @@ MarkSweepPolicy msp; msp.initialize_all(); + if (InitialHeapSize > initial_heap_size) { + // InitialHeapSize was adapted by msp.initialize_all, e.g. due to alignment + // caused by 64K page size. + initial_heap_size = InitialHeapSize; + } + size_t expected = msp.scale_by_NewRatio_aligned(initial_heap_size); assert(msp.initial_young_size() == expected, err_msg("%zu != %zu", msp.initial_young_size(), expected)); assert(FLAG_IS_ERGO(NewSize) && NewSize == expected,