From 513a7b023abd08655ee90ffe4fe0e5bbf7fa924c Mon Sep 17 00:00:00 2001 From: Phil Ringnalda Date: Tue, 4 Jan 2011 21:00:17 -0800 Subject: [PATCH] Bug 623105 - Back out 350fa5d366df on suspicion of breaking regress-290575.js on 64-bit, a=bustage --- dom/base/nsJSEnvironment.cpp | 37 ++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/dom/base/nsJSEnvironment.cpp b/dom/base/nsJSEnvironment.cpp index 59beedb3417..f78aa411945 100644 --- a/dom/base/nsJSEnvironment.cpp +++ b/dom/base/nsJSEnvironment.cpp @@ -4004,19 +4004,26 @@ ReportAllJSExceptionsPrefChangedCallback(const char* aPrefName, void* aClosure) static int SetMemoryHighWaterMarkPrefChangedCallback(const char* aPrefName, void* aClosure) { - PRInt32 highwatermark = nsContentUtils::GetIntPref(aPrefName, 80); + PRInt32 highwatermark = nsContentUtils::GetIntPref(aPrefName, 32); - JS_SetGCParameter(nsJSRuntime::sRuntime, JSGC_MAX_MALLOC_BYTES, - highwatermark * 1024L * 1024L); - return 0; -} - -static int -SetMemoryMaxPrefChangedCallback(const char* aPrefName, void* aClosure) -{ - PRInt32 max = nsContentUtils::GetIntPref(aPrefName, -1); - JS_SetGCParameter(nsJSRuntime::sRuntime, JSGC_MAX_BYTES, - max * 1024L * 1024L); + if (highwatermark >= 32) { + /* + * There are two ways to allocate memory in SpiderMonkey. One is + * to use jsmalloc() and the other is to use GC-owned memory + * (e.g. js_NewGCThing()). + * + * In the browser, we don't cap the amount of GC-owned memory. + */ + JS_SetGCParameter(nsJSRuntime::sRuntime, JSGC_MAX_MALLOC_BYTES, + 128L * 1024L * 1024L); + JS_SetGCParameter(nsJSRuntime::sRuntime, JSGC_MAX_BYTES, + 0xffffffff); + } else { + JS_SetGCParameter(nsJSRuntime::sRuntime, JSGC_MAX_MALLOC_BYTES, + highwatermark * 1024L * 1024L); + JS_SetGCParameter(nsJSRuntime::sRuntime, JSGC_MAX_BYTES, + highwatermark * 1024L * 1024L); + } return 0; } @@ -4154,12 +4161,6 @@ nsJSRuntime::Init() SetMemoryHighWaterMarkPrefChangedCallback("javascript.options.mem.high_water_mark", nsnull); - nsContentUtils::RegisterPrefCallback("javascript.options.mem.max", - SetMemoryMaxPrefChangedCallback, - nsnull); - SetMemoryMaxPrefChangedCallback("javascript.options.mem.max", - nsnull); - nsContentUtils::RegisterPrefCallback("javascript.options.mem.gc_frequency", SetMemoryGCFrequencyPrefChangedCallback, nsnull);