This doesn't fix the underlying problem but makes RunNextCollectorTimer more aggressive in what it does. Testing shows this substantially reduces the max GC heap size while running these tests as well as vsize and RSS. Hopefully this will fix the problem with the tests failing while we work out a good solution for the underlying issue.
Differential Revision: https://phabricator.services.mozilla.com/D44378
--HG--
extra : moz-landing-system : lando
Converted the following to StaticPrefs so that we can easily test variations:
NS_GC_DELAY
NS_SHRINK_GC_BUFFERS_DELAY
NS_FIRST_GC_DELAY
NS_FULL_GC_DELAY
NS_INTERSLICE_GC_DELAY
NS_USER_INTERACTION_INTERVAL
Differential Revision: https://phabricator.services.mozilla.com/D43112
--HG--
extra : moz-landing-system : lando
This requires replacing inclusions of it with inclusions of more specific prefs
files.
The exception is that StaticPrefsAll.h, which is equivalent to StaticPrefs.h,
and is used in `Codegen.py` because doing something smarter is tricky and
suitable for a follow-up. As a result, any change to StaticPrefList.yaml will
still trigger recompilation of all the generated DOM bindings files, but that's
still a big improvement over trigger recompilation of every file that uses
static prefs.
Most of the changes in this commit are very boring. The only changes that are
not boring are modules/libpref/*, Codegen.py, and ServoBindings.toml.
Differential Revision: https://phabricator.services.mozilla.com/D39138
--HG--
extra : moz-landing-system : lando
Update the memory pressure observers for main thread and workers to call the new JS API to set/clear the low memory state.
Differential Revision: https://phabricator.services.mozilla.com/D35682
This patch changes MaybeRunNextCollectorSlice so that it doesn't start a new GC/CC if one is not running already.
This reduces the number of GC slices when running the benchmark from ~400 to ~230.
Olli, what do you think? It seems to me that this is closer to the original intention of the code. I haven't run this through perfherder because I haven't worked out what try command I need to do this, but I figure that it won't make things worse.
Differential Revision: https://phabricator.services.mozilla.com/D35556
Various callers either already call it or should but are forgetting to. The exception is WorkerDebuggerGlobalScope_Binding::Wrap, but it should be OK to set up the profiling functions there too.
Differential Revision: https://phabricator.services.mozilla.com/D35458
--HG--
extra : moz-landing-system : lando
Two places read the value of mIsInitialized: nsJSContext::IsContextInitialized()
and nsJSContext::InitContext(). The former is never called. The latter is called
once, with an nsJSContext that just had its mInitialized field set to false, so
the check will always succeed. Because nothing meaningfully reads the value of
the field, we can delete the field and everything that uses it.
Differential Revision: https://phabricator.services.mozilla.com/D34947
--HG--
extra : moz-landing-system : lando
This makes `Document::GetShell()` return `PresShell*` instead of `nsIPresShell`.
Additonally, "shell" is unclear ("docshell" vs. "presshell"). Therefore, this
also renames `Document::GetShell()` to `Document::GetPresShell()`.
Similarly, some other method names of `Document` are also renamed from
`*Shell*` to `*PresShell*`.
Differential Revision: https://phabricator.services.mozilla.com/D25338
--HG--
extra : moz-landing-system : lando
This makes `Document::GetShell()` return `PresShell*` instead of `nsIPresShell`.
Additonally, "shell" is unclear ("docshell" vs. "presshell"). Therefore, this
also renames `Document::GetShell()` to `Document::GetPresShell()`.
Similarly, some other method names of `Document` are also renamed from
`*Shell*` to `*PresShell*`.
Differential Revision: https://phabricator.services.mozilla.com/D25338
--HG--
extra : moz-landing-system : lando
Since this mode covers both incremental and zonal GC, let's rename it to
reflect that. JSGC_MODE_ZONE_INCREMENTAL.
Differential Revision: https://phabricator.services.mozilla.com/D24849
--HG--
extra : moz-landing-system : lando
This fixes frequent jsreftest OOMs on Win32 because we weren't triggering GC
frequently enough. Bug 1377131 changed the timer ordering in this code and might
have regressed this.
Differential Revision: https://phabricator.services.mozilla.com/D20664
--HG--
extra : moz-landing-system : lando
This commit adds categories to all markers. This way the profiler's
marker categories and frame label categories agree. There are a few
duplicate category properties on some of the marker payloads, but
this could be cleaned up in a follow-up if needed.
Differential Revision: https://phabricator.services.mozilla.com/D16864
--HG--
extra : moz-landing-system : lando
I'm always forgetting which code path is which. So give both these
functions clearer names that say if they're used by profiling or telemetry.
--HG--
extra : rebase_source : 8edcabba510bcf7170b7e071f7cb3a21be23b0e4
Summary: Really sorry for the size of the patch. It's mostly automatic
s/nsIDocument/Document/ but I had to fix up in a bunch of places manually to
add the right namespacing and such.
Overall it's not a very interesting patch I think.
nsDocument.cpp turns into Document.cpp, nsIDocument.h into Document.h and
nsIDocumentInlines.h into DocumentInlines.h.
I also changed a bunch of nsCOMPtr usage to RefPtr, but not all of it.
While fixing up some of the bits I also removed some unneeded OwnerDoc() null
checks and such, but I didn't do anything riskier than that.