diff --git a/src/defaults.cc b/src/defaults.cc index 301155f94d..eb9e0deab0 100644 --- a/src/defaults.cc +++ b/src/defaults.cc @@ -33,6 +33,14 @@ namespace v8 { + +#if V8_OS_ANDROID +const bool kOsHasSwap = false; +#else +const bool kOsHasSwap = true; +#endif + + bool ConfigureResourceConstraintsForCurrentPlatform( ResourceConstraints* constraints) { if (constraints == NULL) { @@ -44,18 +52,22 @@ bool ConfigureResourceConstraintsForCurrentPlatform( // The young_space_size should be a power of 2 and old_generation_size should // be a multiple of Page::kPageSize. - if (physical_memory > 2ul * i::GB) { + if (physical_memory <= 512ul * i::MB) { + constraints->set_max_young_space_size(2 * lump_of_memory); + constraints->set_max_old_space_size(128 * lump_of_memory); + constraints->set_max_executable_size(96 * lump_of_memory); + } else if (physical_memory <= (kOsHasSwap ? 768ul * i::MB : 1ul * i::GB)) { + constraints->set_max_young_space_size(8 * lump_of_memory); + constraints->set_max_old_space_size(256 * lump_of_memory); + constraints->set_max_executable_size(192 * lump_of_memory); + } else if (physical_memory <= (kOsHasSwap ? 1ul * i::GB : 2ul * i::GB)) { + constraints->set_max_young_space_size(16 * lump_of_memory); + constraints->set_max_old_space_size(512 * lump_of_memory); + constraints->set_max_executable_size(256 * lump_of_memory); + } else { constraints->set_max_young_space_size(16 * lump_of_memory); constraints->set_max_old_space_size(700 * lump_of_memory); constraints->set_max_executable_size(256 * lump_of_memory); - } else if (physical_memory > 512ul * i::MB) { - constraints->set_max_young_space_size(8 * lump_of_memory); - constraints->set_max_old_space_size(192 * lump_of_memory); - constraints->set_max_executable_size(192 * lump_of_memory); - } else /* (physical_memory <= 512GB) */ { - constraints->set_max_young_space_size(2 * lump_of_memory); - constraints->set_max_old_space_size(96 * lump_of_memory); - constraints->set_max_executable_size(96 * lump_of_memory); } return true; } @@ -68,4 +80,4 @@ bool SetDefaultResourceConstraintsForCurrentPlatform() { return SetResourceConstraints(&constraints); } -} // namespace v8::internal +} // namespace v8