From d3857d488866f5f10c0c95b4699a20f83902b76a Mon Sep 17 00:00:00 2001 From: Paul Bone Date: Mon, 6 May 2019 03:14:22 +0000 Subject: [PATCH] Bug 1532838 - Add a pref for the minimum nursery size r=mccr8 Differential Revision: https://phabricator.services.mozilla.com/D29815 --HG-- extra : moz-landing-system : lando --- dom/base/nsJSEnvironment.cpp | 9 ++++++--- js/public/GCAPI.h | 2 +- modules/libpref/init/all.js | 4 +++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/dom/base/nsJSEnvironment.cpp b/dom/base/nsJSEnvironment.cpp index 23ffde9a0eb5..9b53e65d1cd8 100644 --- a/dom/base/nsJSEnvironment.cpp +++ b/dom/base/nsJSEnvironment.cpp @@ -2355,8 +2355,8 @@ static void SetMemoryPrefChangedCallbackMB(const char* aPrefName, } } -static void SetMemoryNurseryMaxPrefChangedCallback(const char* aPrefName, - void* aClosure) { +static void SetMemoryNurseryPrefChangedCallback(const char* aPrefName, + void* aClosure) { int32_t prefKB = Preferences::GetInt(aPrefName, -1); // handle overflow and negative pref values CheckedInt prefB = CheckedInt(prefKB) * 1024; @@ -2511,7 +2511,10 @@ void nsJSContext::EnsureStatics() { Preferences::RegisterCallbackAndCall(SetMemoryPrefChangedCallbackMB, "javascript.options.mem.max", (void*)JSGC_MAX_BYTES); - Preferences::RegisterCallbackAndCall(SetMemoryNurseryMaxPrefChangedCallback, + Preferences::RegisterCallbackAndCall(SetMemoryNurseryPrefChangedCallback, + "javascript.options.mem.nursery.min_kb", + (void*)JSGC_MIN_NURSERY_BYTES); + Preferences::RegisterCallbackAndCall(SetMemoryNurseryPrefChangedCallback, "javascript.options.mem.nursery.max_kb", (void*)JSGC_MAX_NURSERY_BYTES); diff --git a/js/public/GCAPI.h b/js/public/GCAPI.h index 6cd6a0167d13..69a0e495358f 100644 --- a/js/public/GCAPI.h +++ b/js/public/GCAPI.h @@ -303,7 +303,7 @@ typedef enum JSGCParamKey { * gc::ChunkSize, otherwise it'll be rounded to the nearest gc::ChunkSize. * * Default: Nursery::SubChunkLimit - * Pref: None + * Pref: javascript.options.mem.nursery.min_kb */ JSGC_MIN_NURSERY_BYTES = 31, diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js index dde9283f216d..4ff3ea7c17c4 100644 --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js @@ -1479,10 +1479,12 @@ pref("javascript.options.mem.high_water_mark", 128); // cannot be represented directly in order to show it in about:config. pref("javascript.options.mem.max", -1); -// JSGC_MAX_NURSERY_BYTES +// JSGC_MIN_NURSERY_BYTES / JSGC_MAX_NURSERY_BYTES #if defined(ANDROID) || defined(XP_IOS) +pref("javascript.options.mem.nursery.min_kb", 192); pref("javascript.options.mem.nursery.max_kb", 4096); #else +pref("javascript.options.mem.nursery.min_kb", 192); pref("javascript.options.mem.nursery.max_kb", 16384); #endif