| Index: src/api.cc
|
| diff --git a/src/api.cc b/src/api.cc
|
| index 330174e79a2f6c4fd73aa1d22e6b2194b244bd2e..8cdb651443f55cb16c3be82db1d69374ed5965d7 100644
|
| --- a/src/api.cc
|
| +++ b/src/api.cc
|
| @@ -69,6 +69,7 @@
|
| #include "src/tracing/trace-event.h"
|
| #include "src/trap-handler/trap-handler.h"
|
| #include "src/unicode-inl.h"
|
| +#include "src/utils.h"
|
| #include "src/v8.h"
|
| #include "src/v8threads.h"
|
| #include "src/value-serializer.h"
|
| @@ -874,38 +875,9 @@ ResourceConstraints::ResourceConstraints()
|
|
|
| void ResourceConstraints::ConfigureDefaults(uint64_t physical_memory,
|
| uint64_t virtual_memory_limit) {
|
| -#if V8_OS_ANDROID
|
| - // Android has higher physical memory requirements before raising the maximum
|
| - // heap size limits since it has no swap space.
|
| - const uint64_t low_limit = 512ul * i::MB;
|
| - const uint64_t medium_limit = 1ul * i::GB;
|
| - const uint64_t high_limit = 2ul * i::GB;
|
| -#else
|
| - const uint64_t low_limit = 512ul * i::MB;
|
| - const uint64_t medium_limit = 768ul * i::MB;
|
| - const uint64_t high_limit = 1ul * i::GB;
|
| -#endif
|
| -
|
| - if (physical_memory <= low_limit) {
|
| - set_max_semi_space_size(i::Heap::kMaxSemiSpaceSizeLowMemoryDevice);
|
| - set_max_old_space_size(i::Heap::kMaxOldSpaceSizeLowMemoryDevice);
|
| - set_max_zone_pool_size(i::AccountingAllocator::kMaxPoolSizeLowMemoryDevice);
|
| - } else if (physical_memory <= medium_limit) {
|
| - set_max_semi_space_size(i::Heap::kMaxSemiSpaceSizeMediumMemoryDevice);
|
| - set_max_old_space_size(i::Heap::kMaxOldSpaceSizeMediumMemoryDevice);
|
| - set_max_zone_pool_size(
|
| - i::AccountingAllocator::kMaxPoolSizeMediumMemoryDevice);
|
| - } else if (physical_memory <= high_limit) {
|
| - set_max_semi_space_size(i::Heap::kMaxSemiSpaceSizeHighMemoryDevice);
|
| - set_max_old_space_size(i::Heap::kMaxOldSpaceSizeHighMemoryDevice);
|
| - set_max_zone_pool_size(
|
| - i::AccountingAllocator::kMaxPoolSizeHighMemoryDevice);
|
| - } else {
|
| - set_max_semi_space_size(i::Heap::kMaxSemiSpaceSizeHugeMemoryDevice);
|
| - set_max_old_space_size(i::Heap::kMaxOldSpaceSizeHugeMemoryDevice);
|
| - set_max_zone_pool_size(
|
| - i::AccountingAllocator::kMaxPoolSizeHugeMemoryDevice);
|
| - }
|
| + set_max_semi_space_size(ComputeMaxSemiSpaceSize(physical_memory));
|
| + set_max_old_space_size(ComputeMaxOldGenerationSize(physical_memory));
|
| + set_max_zone_pool_size(i::AccountingAllocator::kMaxPoolSize);
|
|
|
| if (virtual_memory_limit > 0 && i::kRequiresCodeRange) {
|
| // Reserve no more than 1/8 of the memory for the code range, but at most
|
| @@ -916,6 +888,24 @@ void ResourceConstraints::ConfigureDefaults(uint64_t physical_memory,
|
| }
|
| }
|
|
|
| +int ResourceConstraints::ComputeMaxOldGenerationSize(uint64_t physical_memory) {
|
| + const int old_space_physical_memory_factor = 4;
|
| + int value = i::Max(i::Min(static_cast<int>(physical_memory / i::MB /
|
| + old_space_physical_memory_factor *
|
| + i::Heap::kPointerMultiplier),
|
| + i::Heap::kMaxOldSpaceSize),
|
| + i::Heap::kMinOldSpaceSize);
|
| + return value;
|
| +}
|
| +
|
| +int ResourceConstraints::ComputeMaxSemiSpaceSize(uint64_t physical_memory) {
|
| + const uint64_t semi_space_physical_memory_factor = 512;
|
| + return i::Max(i::Min(static_cast<int>(physical_memory / i::MB /
|
| + semi_space_physical_memory_factor *
|
| + i::Heap::kPointerMultiplier),
|
| + i::Heap::kMaxSemiSpaceSize),
|
| + i::Heap::kMinSemiSpaceSize);
|
| +}
|
|
|
| void SetResourceConstraints(i::Isolate* isolate,
|
| const ResourceConstraints& constraints) {
|
|
|