static void test_old_size() { size_t flag_value; size_t heap_alignment = CollectorPolicy::compute_heap_alignment(); 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(size_t, OldSize, flag_value); verify_old_min(flag_value); set_basic_flag_values(); FLAG_SET_CMDLINE(size_t, OldSize, flag_value); // Calculate what we expect the flag to be. size_t expected_old_initial = align_size_up(InitialHeapSize, 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. // We intentionally set MaxNewSize + OldSize > MaxHeapSize (see over_size). flag_value = 30 * M; set_basic_flag_values(); FLAG_SET_CMDLINE(size_t, OldSize, flag_value); size_t over_size = 20*M; size_t new_size_value = align_size_up(MaxHeapSize, heap_alignment) - flag_value + over_size; FLAG_SET_CMDLINE(size_t, MaxNewSize, new_size_value); // Calculate what we expect the flag to be. expected_old_initial = align_size_up(MaxHeapSize, heap_alignment) - MaxNewSize; verify_old_initial(expected_old_initial); restore_flags(); }
static void test() { size_t flag_value; save_flags(); // Set some limits that makes the math simple. FLAG_SET_ERGO(uintx, MaxHeapSize, 180 * M); FLAG_SET_ERGO(uintx, InitialHeapSize, 120 * M); Arguments::set_min_heap_size(40 * M); // If NewSize is set on the command line, it should be used // for both min and initial young size if less than min heap. flag_value = 20 * M; FLAG_SET_CMDLINE(uintx, NewSize, flag_value); verify_min(flag_value); verify_initial(flag_value); // If NewSize is set on command line, but is larger than the min // heap size, it should only be used for initial young size. flag_value = 80 * M; FLAG_SET_CMDLINE(uintx, NewSize, flag_value); verify_initial(flag_value); // If NewSize has been ergonomically set, the collector policy // should use it for min but calculate the initial young size // using NewRatio. flag_value = 20 * M; FLAG_SET_ERGO(uintx, NewSize, flag_value); verify_min(flag_value); verify_scaled_initial(InitialHeapSize); restore_flags(); }
static void test_new_size() { size_t flag_value; save_flags(); // If NewSize is set on the command line, it should be used // for both min and initial young size if less than min heap. flag_value = 20 * M; set_basic_flag_values(); FLAG_SET_CMDLINE(size_t, NewSize, flag_value); verify_young_min(flag_value); set_basic_flag_values(); FLAG_SET_CMDLINE(size_t, NewSize, flag_value); verify_young_initial(flag_value); // If NewSize is set on command line, but is larger than the min // heap size, it should only be used for initial young size. flag_value = 80 * M; set_basic_flag_values(); FLAG_SET_CMDLINE(size_t, NewSize, flag_value); verify_young_initial(flag_value); // If NewSize has been ergonomically set, the collector policy // should use it for min but calculate the initial young size // using NewRatio. flag_value = 20 * M; set_basic_flag_values(); FLAG_SET_ERGO(size_t, NewSize, flag_value); verify_young_min(flag_value); set_basic_flag_values(); FLAG_SET_ERGO(size_t, NewSize, flag_value); verify_scaled_young_initial(InitialHeapSize); restore_flags(); }