Example #1
0
  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();

  }
Example #3
0
  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();
  }