This is an automated email from the git hooks/post-receive script.
pierov pushed a commit to branch geckoview-99.0.1-11.0-1 in repository tor-browser.
commit 073b00aa6c4f69d35424488983dd6ce664be09b9 Author: donal meehan dmeehan@mozilla.com AuthorDate: Wed Mar 23 17:23:53 2022 -0400
Backed out changeset 00d93cc6125f (bug 1661293) for causing Bug 1758370 --- dom/base/CCGCScheduler.cpp | 8 +++----- dom/base/CCGCScheduler.h | 24 +++++++----------------- dom/base/nsJSEnvironment.cpp | 7 +++---- dom/base/test/gtest/TestScheduler.cpp | 4 ++-- js/public/GCAPI.h | 9 ++++----- js/src/jsapi.cpp | 5 ++--- xpcom/base/CycleCollectedJSRuntime.h | 3 +-- 7 files changed, 22 insertions(+), 38 deletions(-)
diff --git a/dom/base/CCGCScheduler.cpp b/dom/base/CCGCScheduler.cpp index ad426b58d6fe6..f361be97baa44 100644 --- a/dom/base/CCGCScheduler.cpp +++ b/dom/base/CCGCScheduler.cpp @@ -4,7 +4,6 @@
#include "CCGCScheduler.h"
-#include "js/GCAPI.h" #include "mozilla/StaticPrefs_javascript.h" #include "mozilla/CycleCollectedJSRuntime.h" #include "mozilla/ProfilerMarkers.h" @@ -232,8 +231,7 @@ bool CCGCScheduler::GCRunnerFired(TimeStamp aDeadline) { return false;
case GCRunnerAction::MinorGC: - JS::MaybeRunNurseryCollection(CycleCollectedJSRuntime::Get()->Runtime(), - step.mReason); + JS::RunIdleTimeGCTask(CycleCollectedJSRuntime::Get()->Runtime()); NoteMinorGCEnd(); return HasMoreIdleGCRunnerWork();
@@ -808,7 +806,7 @@ CCRunnerStep CCGCScheduler::AdvanceCCRunner(TimeStamp aDeadline, TimeStamp aNow, }
if (mEagerMinorGCReason != JS::GCReason::NO_REASON && !aDeadline.IsNull()) { - return {CCRunnerAction::MinorGC, Continue, mEagerMinorGCReason}; + return {CCRunnerAction::MinorGC, Continue}; }
switch (mCCRunnerState) { @@ -895,7 +893,7 @@ CCRunnerStep CCGCScheduler::AdvanceCCRunner(TimeStamp aDeadline, TimeStamp aNow, // CycleCollecting: continue running slices until done. case CCRunnerState::CycleCollecting: { CCRunnerStep step{CCRunnerAction::CycleCollect, Yield}; - step.mParam.mCCReason = mCCReason; + step.mCCReason = mCCReason; mCCReason = CCReason::SLICE; // Set reason for following slices. return step; } diff --git a/dom/base/CCGCScheduler.h b/dom/base/CCGCScheduler.h index 393d0125a317d..cf9c2c90aee20 100644 --- a/dom/base/CCGCScheduler.h +++ b/dom/base/CCGCScheduler.h @@ -111,23 +111,13 @@ struct CCRunnerStep { // callback. CCRunnerYield mYield;
- union ActionData { - // If the action is ForgetSkippable, then whether to remove childless nodes - // or not. - CCRunnerForgetSkippableRemoveChildless mRemoveChildless; - - // If the action is CycleCollect, the reason for the collection. - CCReason mCCReason; - - // If the action is MinorGC, the reason for the GC. - JS::GCReason mReason; - - MOZ_IMPLICIT ActionData(CCRunnerForgetSkippableRemoveChildless v) - : mRemoveChildless(v) {} - MOZ_IMPLICIT ActionData(CCReason v) : mCCReason(v) {} - MOZ_IMPLICIT ActionData(JS::GCReason v) : mReason(v) {} - ActionData() = default; - } mParam; + // If the action is ForgetSkippable, then whether to remove childless nodes + // or not. (ForgetSkippable is the only action requiring a parameter; if + // that changes, this will become a union.) + CCRunnerForgetSkippableRemoveChildless mRemoveChildless; + + // If the action is CycleCollect, the reason for the collection. + CCReason mCCReason; };
class CCGCScheduler { diff --git a/dom/base/nsJSEnvironment.cpp b/dom/base/nsJSEnvironment.cpp index c4f42f3ab2da9..3af7d18feac13 100644 --- a/dom/base/nsJSEnvironment.cpp +++ b/dom/base/nsJSEnvironment.cpp @@ -1548,14 +1548,13 @@ bool CCGCScheduler::CCRunnerFired(TimeStamp aDeadline) { break;
case CCRunnerAction::MinorGC: - JS::MaybeRunNurseryCollection(CycleCollectedJSRuntime::Get()->Runtime(), - step.mParam.mReason); + JS::RunIdleTimeGCTask(CycleCollectedJSRuntime::Get()->Runtime()); sScheduler.NoteMinorGCEnd(); break;
case CCRunnerAction::ForgetSkippable: // 'Forget skippable' only, then end this invocation. - FireForgetSkippable(bool(step.mParam.mRemoveChildless), aDeadline); + FireForgetSkippable(bool(step.mRemoveChildless), aDeadline); break;
case CCRunnerAction::CleanupContentUnbinder: @@ -1570,7 +1569,7 @@ bool CCGCScheduler::CCRunnerFired(TimeStamp aDeadline) {
case CCRunnerAction::CycleCollect: // Cycle collection slice. - nsJSContext::RunCycleCollectorSlice(step.mParam.mCCReason, aDeadline); + nsJSContext::RunCycleCollectorSlice(step.mCCReason, aDeadline); break;
case CCRunnerAction::StopRunning: diff --git a/dom/base/test/gtest/TestScheduler.cpp b/dom/base/test/gtest/TestScheduler.cpp index 367bcd9e7def6..a60b4fcfcd322 100644 --- a/dom/base/test/gtest/TestScheduler.cpp +++ b/dom/base/test/gtest/TestScheduler.cpp @@ -125,7 +125,7 @@ void TestCC::TimerFires(int aNumSlices) { mScheduler.AdvanceCCRunner(idleDeadline, Now(), SuspectedCCObjects()); // Should first see a series of ForgetSkippable actions. if (step.mAction != CCRunnerAction::ForgetSkippable || - step.mParam.mRemoveChildless != KeepChildless) { + step.mRemoveChildless != KeepChildless) { break; } EXPECT_EQ(step.mYield, Yield); @@ -138,7 +138,7 @@ void TestCC::TimerFires(int aNumSlices) { mScheduler.AdvanceCCRunner(idleDeadline, Now(), SuspectedCCObjects()); } EXPECT_EQ(step.mAction, CCRunnerAction::ForgetSkippable); - EXPECT_EQ(step.mParam.mRemoveChildless, RemoveChildless); + EXPECT_EQ(step.mRemoveChildless, RemoveChildless); ForgetSkippable();
TimeStamp idleDeadline = Now() + kOneSecond; diff --git a/js/public/GCAPI.h b/js/public/GCAPI.h index 9ba9c3750ade0..a92b9589104a4 100644 --- a/js/public/GCAPI.h +++ b/js/public/GCAPI.h @@ -416,8 +416,8 @@ typedef enum JSGCParamKey { JSGC_MINOR_GC_NUMBER = 45,
/** - * JS::MaybeRunNurseryCollection will collect the nursery if it hasn't been - * collected in this many milliseconds. + * JS::RunIdleTimeGCTask will collect the nursery if it hasn't been collected + * in this many milliseconds. * * Default: 5000 * Pref: None @@ -551,7 +551,7 @@ namespace JS { D(OUT_OF_NURSERY, 10) \ D(EVICT_NURSERY, 11) \ D(SHARED_MEMORY_LIMIT, 13) \ - D(EAGER_NURSERY_COLLECTION, 14) \ + D(IDLE_TIME_COLLECTION, 14) \ D(BG_TASK_FINISHED, 15) \ D(ABORT_GC, 16) \ D(FULL_WHOLE_CELL_BUFFER, 17) \ @@ -1239,8 +1239,7 @@ namespace JS {
extern JS_PUBLIC_API bool IsIdleGCTaskNeeded(JSRuntime* rt);
-extern JS_PUBLIC_API void MaybeRunNurseryCollection(JSRuntime* rt, - JS::GCReason reason); +extern JS_PUBLIC_API void RunIdleTimeGCTask(JSRuntime* rt);
extern JS_PUBLIC_API void SetHostCleanupFinalizationRegistryCallback( JSContext* cx, JSHostCleanupFinalizationRegistryCallback cb, void* data); diff --git a/js/src/jsapi.cpp b/js/src/jsapi.cpp index db03374c31831..827e04a3dec7e 100644 --- a/js/src/jsapi.cpp +++ b/js/src/jsapi.cpp @@ -1284,11 +1284,10 @@ JS_PUBLIC_API bool JS::IsIdleGCTaskNeeded(JSRuntime* rt) { return rt->gc.nursery().shouldCollect(); }
-JS_PUBLIC_API void JS::MaybeRunNurseryCollection(JSRuntime* rt, - JS::GCReason reason) { +JS_PUBLIC_API void JS::RunIdleTimeGCTask(JSRuntime* rt) { gc::GCRuntime& gc = rt->gc; if (gc.nursery().shouldCollect()) { - gc.minorGC(reason); + gc.minorGC(JS::GCReason::IDLE_TIME_COLLECTION); } }
diff --git a/xpcom/base/CycleCollectedJSRuntime.h b/xpcom/base/CycleCollectedJSRuntime.h index b1689df042231..db21eb102991b 100644 --- a/xpcom/base/CycleCollectedJSRuntime.h +++ b/xpcom/base/CycleCollectedJSRuntime.h @@ -368,8 +368,7 @@ class CycleCollectedJSRuntime {
void RunIdleTimeGCTask() { if (HasPendingIdleGCTask()) { - JS::MaybeRunNurseryCollection(Runtime(), - JS::GCReason::EAGER_NURSERY_COLLECTION); + JS::RunIdleTimeGCTask(Runtime()); ClearPendingIdleGCTask(); } }