mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-03 22:07:30 +09:00
Implement configuration pref for Generational Garbage Collection.
Pref: javascript.options.mem.gc_generational This resolves #20
This commit is contained in:
parent
05eb40a155
commit
935b074787
4 changed files with 20 additions and 0 deletions
|
|
@ -2282,6 +2282,7 @@ SetMemoryGCModePrefChangedCallback(const char* aPrefName, void* aClosure)
|
||||||
{
|
{
|
||||||
bool enableZoneGC = Preferences::GetBool("javascript.options.mem.gc_per_zone");
|
bool enableZoneGC = Preferences::GetBool("javascript.options.mem.gc_per_zone");
|
||||||
bool enableIncrementalGC = Preferences::GetBool("javascript.options.mem.gc_incremental");
|
bool enableIncrementalGC = Preferences::GetBool("javascript.options.mem.gc_incremental");
|
||||||
|
bool enableGenerationalGC = Preferences::GetBool("javascript.options.mem.gc_generational");
|
||||||
JSGCMode mode;
|
JSGCMode mode;
|
||||||
if (enableIncrementalGC) {
|
if (enableIncrementalGC) {
|
||||||
mode = JSGC_MODE_INCREMENTAL;
|
mode = JSGC_MODE_INCREMENTAL;
|
||||||
|
|
@ -2291,6 +2292,7 @@ SetMemoryGCModePrefChangedCallback(const char* aPrefName, void* aClosure)
|
||||||
mode = JSGC_MODE_GLOBAL;
|
mode = JSGC_MODE_GLOBAL;
|
||||||
}
|
}
|
||||||
JS_SetGCParameter(sContext, JSGC_MODE, mode);
|
JS_SetGCParameter(sContext, JSGC_MODE, mode);
|
||||||
|
JS_SetGGCMode(sContext, enableGenerationalGC);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
@ -2485,6 +2487,9 @@ nsJSContext::EnsureStatics()
|
||||||
Preferences::RegisterCallbackAndCall(SetMemoryGCSliceTimePrefChangedCallback,
|
Preferences::RegisterCallbackAndCall(SetMemoryGCSliceTimePrefChangedCallback,
|
||||||
"javascript.options.mem.gc_incremental_slice_ms");
|
"javascript.options.mem.gc_incremental_slice_ms");
|
||||||
|
|
||||||
|
Preferences::RegisterCallbackAndCall(SetMemoryGCModePrefChangedCallback,
|
||||||
|
"javascript.options.mem.gc_generational");
|
||||||
|
|
||||||
Preferences::RegisterCallbackAndCall(SetMemoryGCCompactingPrefChangedCallback,
|
Preferences::RegisterCallbackAndCall(SetMemoryGCCompactingPrefChangedCallback,
|
||||||
"javascript.options.mem.gc_compacting");
|
"javascript.options.mem.gc_compacting");
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1410,6 +1410,17 @@ JS_SetGCParameter(JSContext* cx, JSGCParamKey key, uint32_t value)
|
||||||
MOZ_ALWAYS_TRUE(cx->gc.setParameter(key, value, lock));
|
MOZ_ALWAYS_TRUE(cx->gc.setParameter(key, value, lock));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JS_PUBLIC_API(void)
|
||||||
|
JS_SetGGCMode(JSContext* cx, bool enabled)
|
||||||
|
{
|
||||||
|
// Control GGC
|
||||||
|
if (enabled && !cx->gc.isGenerationalGCEnabled()) {
|
||||||
|
cx->gc.enableGenerationalGC();
|
||||||
|
} else if (!enabled && cx->gc.isGenerationalGCEnabled()) {
|
||||||
|
cx->gc.disableGenerationalGC();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
JS_PUBLIC_API(uint32_t)
|
JS_PUBLIC_API(uint32_t)
|
||||||
JS_GetGCParameter(JSContext* cx, JSGCParamKey key)
|
JS_GetGCParameter(JSContext* cx, JSGCParamKey key)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1768,6 +1768,9 @@ typedef enum JSGCParamKey {
|
||||||
extern JS_PUBLIC_API(void)
|
extern JS_PUBLIC_API(void)
|
||||||
JS_SetGCParameter(JSContext* cx, JSGCParamKey key, uint32_t value);
|
JS_SetGCParameter(JSContext* cx, JSGCParamKey key, uint32_t value);
|
||||||
|
|
||||||
|
extern JS_PUBLIC_API(void)
|
||||||
|
JS_SetGGCMode(JSContext* cx, bool enabled);
|
||||||
|
|
||||||
extern JS_PUBLIC_API(uint32_t)
|
extern JS_PUBLIC_API(uint32_t)
|
||||||
JS_GetGCParameter(JSContext* cx, JSGCParamKey key);
|
JS_GetGCParameter(JSContext* cx, JSGCParamKey key);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1258,6 +1258,7 @@ pref("javascript.options.mem.max", -1);
|
||||||
pref("javascript.options.mem.gc_per_zone", true);
|
pref("javascript.options.mem.gc_per_zone", true);
|
||||||
pref("javascript.options.mem.gc_incremental", true);
|
pref("javascript.options.mem.gc_incremental", true);
|
||||||
pref("javascript.options.mem.gc_incremental_slice_ms", 10);
|
pref("javascript.options.mem.gc_incremental_slice_ms", 10);
|
||||||
|
pref("javascript.options.mem.gc_generational", true);
|
||||||
pref("javascript.options.mem.gc_compacting", true);
|
pref("javascript.options.mem.gc_compacting", true);
|
||||||
pref("javascript.options.mem.log", false);
|
pref("javascript.options.mem.log", false);
|
||||||
pref("javascript.options.mem.notify", false);
|
pref("javascript.options.mem.notify", false);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue