[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [tor-browser] 245/311: Backed out changeset 04443fa474ac (bug 1661293) for causing Bug 1758370
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 4347f3f73a6804ffb39d66f05837725bae72acd2
Author: donal meehan <dmeehan@xxxxxxxxxxx>
AuthorDate: Wed Mar 23 17:24:49 2022 -0400
Backed out changeset 04443fa474ac (bug 1661293) for causing Bug 1758370
---
dom/base/CCGCScheduler.cpp | 40 ++++++++---------------------------
dom/base/CCGCScheduler.h | 5 ++---
dom/base/nsJSEnvironment.cpp | 2 +-
dom/base/test/gtest/TestScheduler.cpp | 2 +-
4 files changed, 13 insertions(+), 36 deletions(-)
diff --git a/dom/base/CCGCScheduler.cpp b/dom/base/CCGCScheduler.cpp
index efa5c77720beb..44b12f86699ec 100644
--- a/dom/base/CCGCScheduler.cpp
+++ b/dom/base/CCGCScheduler.cpp
@@ -109,7 +109,7 @@
namespace mozilla {
-void CCGCScheduler::NoteGCBegin(JS::GCReason aReason) {
+void CCGCScheduler::NoteGCBegin() {
// Treat all GC as incremental here; non-incremental GC will just appear to
// be one slice.
mInIncrementalGC = true;
@@ -122,19 +122,10 @@ void CCGCScheduler::NoteGCBegin(JS::GCReason aReason) {
if (child) {
child->StartedGC();
}
-
- // The reason might have come from mMajorReason, mEagerMajorGCReason, or
- // in the case of an internally-generated GC, it might come from the
- // internal logic (and be passed in here). It's easier to manage a single
- // reason state variable, so merge all sources into mMajorGCReason.
- MOZ_ASSERT(aReason != JS::GCReason::NO_REASON);
- mMajorGCReason = aReason;
- mEagerMajorGCReason = JS::GCReason::NO_REASON;
}
void CCGCScheduler::NoteGCEnd() {
mMajorGCReason = JS::GCReason::NO_REASON;
- mEagerMajorGCReason = JS::GCReason::NO_REASON;
mInIncrementalGC = false;
mCCBlockStart = TimeStamp();
@@ -214,7 +205,6 @@ void CCGCScheduler::NoteCCEnd(TimeStamp aWhen) {
void CCGCScheduler::NoteWontGC() {
mReadyForMajorGC = !mAskParentBeforeMajorGC;
mMajorGCReason = JS::GCReason::NO_REASON;
- mEagerMajorGCReason = JS::GCReason::NO_REASON;
mWantAtLeastRegularGC = false;
// Don't clear the WantFullGC state, we will do a full GC the next time a
// GC happens for any other reason.
@@ -223,11 +213,10 @@ void CCGCScheduler::NoteWontGC() {
bool CCGCScheduler::GCRunnerFired(TimeStamp aDeadline) {
MOZ_ASSERT(!mDidShutdown, "GCRunner still alive during shutdown");
- GCRunnerStep step = GetNextGCRunnerAction(aDeadline);
+ GCRunnerStep step = GetNextGCRunnerAction();
switch (step.mAction) {
case GCRunnerAction::None:
- KillGCRunner();
- return false;
+ MOZ_CRASH("Unexpected GCRunnerAction");
case GCRunnerAction::WaitToMajorGC: {
MOZ_ASSERT(!mHaveAskedParent, "GCRunner alive after asking the parent");
@@ -893,29 +882,18 @@ CCRunnerStep CCGCScheduler::AdvanceCCRunner(TimeStamp aDeadline, TimeStamp aNow,
};
}
-GCRunnerStep CCGCScheduler::GetNextGCRunnerAction(TimeStamp aDeadline) const {
+GCRunnerStep CCGCScheduler::GetNextGCRunnerAction() const {
+ MOZ_ASSERT(mMajorGCReason != JS::GCReason::NO_REASON);
+
if (InIncrementalGC()) {
- MOZ_ASSERT(mMajorGCReason != JS::GCReason::NO_REASON);
return {GCRunnerAction::GCSlice, mMajorGCReason};
}
- // Service a non-eager GC request first, even if it requires waiting.
- if (mMajorGCReason != JS::GCReason::NO_REASON) {
- return {mReadyForMajorGC ? GCRunnerAction::StartMajorGC
- : GCRunnerAction::WaitToMajorGC,
- mMajorGCReason};
- }
-
- // Now for eager requests, which are ignored unless we're idle.
- if (!aDeadline.IsNull()) {
- if (mEagerMajorGCReason != JS::GCReason::NO_REASON) {
- return {mReadyForMajorGC ? GCRunnerAction::StartMajorGC
- : GCRunnerAction::WaitToMajorGC,
- mEagerMajorGCReason};
- }
+ if (mReadyForMajorGC) {
+ return {GCRunnerAction::StartMajorGC, mMajorGCReason};
}
- return {GCRunnerAction::None, JS::GCReason::NO_REASON};
+ return {GCRunnerAction::WaitToMajorGC, mMajorGCReason};
}
js::SliceBudget CCGCScheduler::ComputeForgetSkippableBudget(
diff --git a/dom/base/CCGCScheduler.h b/dom/base/CCGCScheduler.h
index 466e5ace9977d..aed3d87ede89f 100644
--- a/dom/base/CCGCScheduler.h
+++ b/dom/base/CCGCScheduler.h
@@ -235,7 +235,7 @@ class CCGCScheduler {
}
// Starting a major GC (incremental or non-incremental).
- void NoteGCBegin(JS::GCReason aReason);
+ void NoteGCBegin();
// Major GC completed.
void NoteGCEnd();
@@ -424,7 +424,7 @@ class CCGCScheduler {
mCCReason = CCReason::NO_REASON;
}
- GCRunnerStep GetNextGCRunnerAction(TimeStamp aDeadline) const;
+ GCRunnerStep GetNextGCRunnerAction() const;
CCRunnerStep AdvanceCCRunner(TimeStamp aDeadline, TimeStamp aNow,
uint32_t aSuspectedCCObjects);
@@ -496,7 +496,6 @@ class CCGCScheduler {
mozilla::CCReason mCCReason = mozilla::CCReason::NO_REASON;
JS::GCReason mMajorGCReason = JS::GCReason::NO_REASON;
- JS::GCReason mEagerMajorGCReason = JS::GCReason::NO_REASON;
bool mIsCompactingOnUserInactive = false;
bool mIsCollectingCycles = false;
diff --git a/dom/base/nsJSEnvironment.cpp b/dom/base/nsJSEnvironment.cpp
index eed3705ab33d8..2fa70e2eea7ac 100644
--- a/dom/base/nsJSEnvironment.cpp
+++ b/dom/base/nsJSEnvironment.cpp
@@ -1692,7 +1692,7 @@ static void DOMGCSliceCallback(JSContext* aCx, JS::GCProgress aProgress,
switch (aProgress) {
case JS::GC_CYCLE_BEGIN: {
// Prevent cycle collections and shrinking during incremental GC.
- sScheduler.NoteGCBegin(aDesc.reason_);
+ sScheduler.NoteGCBegin();
sCurrentGCStartTime = TimeStamp::Now();
break;
}
diff --git a/dom/base/test/gtest/TestScheduler.cpp b/dom/base/test/gtest/TestScheduler.cpp
index a60b4fcfcd322..1b68279ff9b52 100644
--- a/dom/base/test/gtest/TestScheduler.cpp
+++ b/dom/base/test/gtest/TestScheduler.cpp
@@ -53,7 +53,7 @@ void TestGC::Run(int aNumSlices) {
CCReason neededCCAtStartOfGC =
mScheduler.IsCCNeeded(Now(), SuspectedCCObjects());
- mScheduler.NoteGCBegin(JS::GCReason::API);
+ mScheduler.NoteGCBegin();
for (int slice = 0; slice < aNumSlices; slice++) {
EXPECT_TRUE(mScheduler.InIncrementalGC());
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits