| Index: src/api.cc
|
| diff --git a/src/api.cc b/src/api.cc
|
| index aed4af089b7c5b1eeb79194fa1622feba4c0daee..d213d9a700a170058f56d91e5272be6c30c38ad3 100644
|
| --- a/src/api.cc
|
| +++ b/src/api.cc
|
| @@ -697,13 +697,13 @@ Extension::Extension(const char* name,
|
| CHECK(source != NULL || source_length_ == 0);
|
| }
|
|
|
| -
|
| ResourceConstraints::ResourceConstraints()
|
| : max_semi_space_size_(0),
|
| max_old_space_size_(0),
|
| max_executable_size_(0),
|
| stack_limit_(NULL),
|
| - code_range_size_(0) { }
|
| + code_range_size_(0),
|
| + max_zone_pool_size_(0) {}
|
|
|
| void ResourceConstraints::ConfigureDefaults(uint64_t physical_memory,
|
| uint64_t virtual_memory_limit) {
|
| @@ -723,18 +723,25 @@ void ResourceConstraints::ConfigureDefaults(uint64_t physical_memory,
|
| set_max_semi_space_size(i::Heap::kMaxSemiSpaceSizeLowMemoryDevice);
|
| set_max_old_space_size(i::Heap::kMaxOldSpaceSizeLowMemoryDevice);
|
| set_max_executable_size(i::Heap::kMaxExecutableSizeLowMemoryDevice);
|
| + 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_executable_size(i::Heap::kMaxExecutableSizeMediumMemoryDevice);
|
| + 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_executable_size(i::Heap::kMaxExecutableSizeHighMemoryDevice);
|
| + 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_executable_size(i::Heap::kMaxExecutableSizeHugeMemoryDevice);
|
| + set_max_zone_pool_size(
|
| + i::AccountingAllocator::kMaxPoolSizeHugeMemoryDevice);
|
| }
|
|
|
| if (virtual_memory_limit > 0 && i::kRequiresCodeRange) {
|
| @@ -753,11 +760,14 @@ void SetResourceConstraints(i::Isolate* isolate,
|
| int old_space_size = constraints.max_old_space_size();
|
| int max_executable_size = constraints.max_executable_size();
|
| size_t code_range_size = constraints.code_range_size();
|
| + size_t max_pool_size = constraints.max_zone_pool_size();
|
| if (semi_space_size != 0 || old_space_size != 0 ||
|
| max_executable_size != 0 || code_range_size != 0) {
|
| isolate->heap()->ConfigureHeap(semi_space_size, old_space_size,
|
| max_executable_size, code_range_size);
|
| }
|
| + isolate->allocator()->ConfigureSegmentPool(max_pool_size);
|
| +
|
| if (constraints.stack_limit() != NULL) {
|
| uintptr_t limit = reinterpret_cast<uintptr_t>(constraints.stack_limit());
|
| isolate->stack_guard()->SetStackLimit(limit);
|
|
|