[tor-commits] [tor-browser] 243/311: Backed out changeset 00d93cc6125f (bug 1661293) for causing Bug 1758370

gitolite role git at cupani.torproject.org
Tue Apr 26 15:30:43 UTC 2022


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 at 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();
     }
   }

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the tor-commits mailing list