Chromium Code Reviews| Index: src/heap/heap.h |
| diff --git a/src/heap/heap.h b/src/heap/heap.h |
| index a1cb4d22bef229aef7dffe7ce85807a1791c0733..f8f4a2c259456d28dd106054f7c0aa735750bf09 100644 |
| --- a/src/heap/heap.h |
| +++ b/src/heap/heap.h |
| @@ -614,18 +614,13 @@ class Heap { |
| #endif |
| // The new space size has to be a power of 2. Sizes are in MB. |
| - static const int kMaxSemiSpaceSizeLowMemoryDevice = 1 * kPointerMultiplier; |
| - static const int kMaxSemiSpaceSizeMediumMemoryDevice = 4 * kPointerMultiplier; |
| - static const int kMaxSemiSpaceSizeHighMemoryDevice = 8 * kPointerMultiplier; |
| - static const int kMaxSemiSpaceSizeHugeMemoryDevice = 8 * kPointerMultiplier; |
| + static const int kMinSemiSpaceSize = 1 * kPointerMultiplier; |
| + static const int kMaxSemiSpaceSize = 8 * kPointerMultiplier; |
| // The old space size has to be a multiple of Page::kPageSize. |
| // Sizes are in MB. |
| - static const int kMaxOldSpaceSizeLowMemoryDevice = 128 * kPointerMultiplier; |
| - static const int kMaxOldSpaceSizeMediumMemoryDevice = |
| - 256 * kPointerMultiplier; |
| - static const int kMaxOldSpaceSizeHighMemoryDevice = 512 * kPointerMultiplier; |
| - static const int kMaxOldSpaceSizeHugeMemoryDevice = 1024 * kPointerMultiplier; |
| + static const int kMinOldSpaceSize = 128 * kPointerMultiplier; |
| + static const int kMaxOldSpaceSize = 1024 * kPointerMultiplier; |
| static const int kTraceRingBufferSize = 512; |
| static const int kStacktraceBufferSize = 512; |
| @@ -951,10 +946,12 @@ class Heap { |
| bool ShouldOptimizeForMemoryUsage(); |
| bool IsLowMemoryDevice() { |
| + const int kMaxOldSpaceSizeLowMemoryDevice = 128 * kPointerMultiplier; |
| return max_old_generation_size_ <= kMaxOldSpaceSizeLowMemoryDevice; |
| } |
| bool IsMemoryConstrainedDevice() { |
| + const int kMaxOldSpaceSizeMediumMemoryDevice = 256 * kPointerMultiplier; |
| return max_old_generation_size_ <= kMaxOldSpaceSizeMediumMemoryDevice; |
| } |
| @@ -1347,6 +1344,27 @@ class Heap { |
| size_t InitialSemiSpaceSize() { return initial_semispace_size_; } |
| size_t MaxOldGenerationSize() { return max_old_generation_size_; } |
| + static size_t ComputeMaxOldGenerationSize(uint64_t physical_memory) { |
| + const int old_space_physical_memory_factor = 4; |
| + int computed_size = |
| + static_cast<int>(physical_memory / i::MB / |
| + old_space_physical_memory_factor * kPointerMultiplier); |
| + return Max(Min(computed_size, kMaxOldSpaceSize), kMinOldSpaceSize); |
| + } |
| + |
| + static size_t ComputeMaxSemiSpaceSize(uint64_t physical_memory) { |
| + const uint64_t min_physical_memory = 512 * MB; |
| + const uint64_t max_physical_memory = 2 * static_cast<uint64_t>(GB); |
| + |
| + uint64_t rounded_physical_memory = |
|
ulan
2017/05/23 16:27:49
maybe call this capped_physical_memory?
Hannes Payer (out of office)
2017/05/23 16:30:19
Done.
|
| + Max(Min(physical_memory, max_physical_memory), min_physical_memory); |
| + // linearly scale max semi-space size: (X-A)/(B-A)*(D-C)+C |
| + return static_cast<int>(((rounded_physical_memory - min_physical_memory) * |
| + (kMaxSemiSpaceSize - kMinSemiSpaceSize)) / |
| + (max_physical_memory - min_physical_memory) + |
| + kMinSemiSpaceSize); |
| + } |
| + |
| // Returns the capacity of the heap in bytes w/o growing. Heap grows when |
| // more spaces are needed until it reaches the limit. |
| size_t Capacity(); |