| Index: src/heap/heap.cc
|
| diff --git a/src/heap/heap.cc b/src/heap/heap.cc
|
| index 2c7fc58a1a5d3d03d35f8aa0c8131c28bf888684..6e566c0b5ba0210c77f0dac87ea8af7aed70f000 100644
|
| --- a/src/heap/heap.cc
|
| +++ b/src/heap/heap.cc
|
| @@ -61,6 +61,7 @@ Heap::Heap()
|
| reserved_semispace_size_(8 * (kPointerSize / 4) * MB),
|
| max_semi_space_size_(8 * (kPointerSize / 4) * MB),
|
| initial_semispace_size_(Page::kPageSize),
|
| + target_semispace_size_(Page::kPageSize),
|
| max_old_generation_size_(700ul * (kPointerSize / 4) * MB),
|
| max_executable_size_(256ul * (kPointerSize / 4) * MB),
|
| // Variables set based on semispace_size_ and old_generation_size_ in
|
| @@ -4944,9 +4945,9 @@ bool Heap::ConfigureHeap(int max_semi_space_size, int max_old_space_size,
|
| initial_semispace_size_ = max_semi_space_size_;
|
| if (FLAG_trace_gc) {
|
| PrintPID(
|
| - "Min semi-space size cannot be more than the maximum"
|
| + "Min semi-space size cannot be more than the maximum "
|
| "semi-space size of %d MB\n",
|
| - max_semi_space_size_);
|
| + max_semi_space_size_ / MB);
|
| }
|
| } else {
|
| initial_semispace_size_ = initial_semispace_size;
|
| @@ -4955,6 +4956,31 @@ bool Heap::ConfigureHeap(int max_semi_space_size, int max_old_space_size,
|
|
|
| initial_semispace_size_ = Min(initial_semispace_size_, max_semi_space_size_);
|
|
|
| + if (FLAG_target_semi_space_size > 0) {
|
| + int target_semispace_size = FLAG_target_semi_space_size * MB;
|
| + if (target_semispace_size < initial_semispace_size_) {
|
| + target_semispace_size_ = initial_semispace_size_;
|
| + if (FLAG_trace_gc) {
|
| + PrintPID(
|
| + "Target semi-space size cannot be less than the minimum "
|
| + "semi-space size of %d MB\n",
|
| + initial_semispace_size_ / MB);
|
| + }
|
| + } else if (target_semispace_size > max_semi_space_size_) {
|
| + target_semispace_size_ = max_semi_space_size_;
|
| + if (FLAG_trace_gc) {
|
| + PrintPID(
|
| + "Target semi-space size cannot be less than the maximum "
|
| + "semi-space size of %d MB\n",
|
| + max_semi_space_size_ / MB);
|
| + }
|
| + } else {
|
| + target_semispace_size_ = target_semispace_size;
|
| + }
|
| + }
|
| +
|
| + target_semispace_size_ = Max(initial_semispace_size_, target_semispace_size_);
|
| +
|
| // The old generation is paged and needs at least one page for each space.
|
| int paged_space_count = LAST_PAGED_SPACE - FIRST_PAGED_SPACE + 1;
|
| max_old_generation_size_ =
|
|
|