Commit 6c5f64ab authored by Andrew McCreight's avatar Andrew McCreight
Browse files

Bug 1862782, part 1 - Move DeferredFinalizeType to CycleCollectedJSRuntime. a=diannaS

I'm guessing that it got moved into the wrong file for the Quantum DOM
split into CCJSContext and CCJSRuntime. The only use is in the latter
so it makes sense to have it there.

Original Revision: https://phabricator.services.mozilla.com/D192638

Differential Revision: https://phabricator.services.mozilla.com/D192845
parent f970aa2c
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -160,11 +160,6 @@ class CycleCollectedJSContext : dom::PerThreadAtomCache, private JS::JobQueue {
  void CleanupIDBTransactions(uint32_t aRecursionDepth);

 public:
  enum DeferredFinalizeType {
    FinalizeIncrementally,
    FinalizeNow,
  };

  virtual dom::WorkerJSContext* GetAsWorkerJSContext() { return nullptr; }
  virtual dom::WorkletJSContext* GetAsWorkletJSContext() { return nullptr; }

+4 −5
Original line number Diff line number Diff line
@@ -1768,7 +1768,7 @@ IncrementalFinalizeRunnable::Run() {
}

void CycleCollectedJSRuntime::FinalizeDeferredThings(
    CycleCollectedJSContext::DeferredFinalizeType aType) {
    DeferredFinalizeType aType) {
  /*
   * If the previous GC created a runnable to finalize objects
   * incrementally, and if it hasn't finished yet, finish it now. We
@@ -1795,7 +1795,7 @@ void CycleCollectedJSRuntime::FinalizeDeferredThings(
  // Everything should be gone now.
  MOZ_ASSERT(mDeferredFinalizerTable.Count() == 0);

  if (aType == CycleCollectedJSContext::FinalizeIncrementally) {
  if (aType == FinalizeIncrementally) {
    NS_DispatchToCurrentThreadQueue(do_AddRef(mFinalizeRunnable), 2500,
                                    EventQueuePriority::Idle);
  } else {
@@ -1875,9 +1875,8 @@ void CycleCollectedJSRuntime::OnGC(JSContext* aContext, JSGCStatus aStatus,
                                   (JS::InternalGCReason(aReason) &&
                                    aReason != JS::GCReason::DESTROY_RUNTIME);

      FinalizeDeferredThings(
          finalizeIncrementally ? CycleCollectedJSContext::FinalizeIncrementally
                                : CycleCollectedJSContext::FinalizeNow);
      FinalizeDeferredThings(finalizeIncrementally ? FinalizeIncrementally
                                                   : FinalizeNow);

      break;
    }
+6 −2
Original line number Diff line number Diff line
@@ -301,8 +301,12 @@ class CycleCollectedJSRuntime {
                      js::SliceBudget& aBudget);

 public:
  void FinalizeDeferredThings(
      CycleCollectedJSContext::DeferredFinalizeType aType);
  enum DeferredFinalizeType {
    FinalizeIncrementally,
    FinalizeNow,
  };

  void FinalizeDeferredThings(DeferredFinalizeType aType);

  virtual void PrepareForForgetSkippable() = 0;
  virtual void BeginCycleCollectionCallback(mozilla::CCReason aReason) = 0;
+2 −2
Original line number Diff line number Diff line
@@ -3398,8 +3398,8 @@ void nsCycleCollector::CleanupAfterCollection() {

  if (mCCJSRuntime) {
    mCCJSRuntime->FinalizeDeferredThings(
        mResults.mAnyManual ? CycleCollectedJSContext::FinalizeNow
                            : CycleCollectedJSContext::FinalizeIncrementally);
        mResults.mAnyManual ? CycleCollectedJSRuntime::FinalizeNow
                            : CycleCollectedJSRuntime::FinalizeIncrementally);
    mCCJSRuntime->EndCycleCollectionCallback(mResults);
    timeLog.Checkpoint("CleanupAfterCollection::EndCycleCollectionCallback()");
  }