From 3ae3595f6a502ac43e4ce430398905910342d505 Mon Sep 17 00:00:00 2001 From: Basilisk-Dev Date: Sun, 24 May 2026 14:53:56 -0400 Subject: [PATCH] Revert "Issue #3092 - Perform a minor GC on tab close" This reverts commit 266cc371f7bbb507c07f4e65a1244e5094cd1623. --- js/src/jsgc.cpp | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/js/src/jsgc.cpp b/js/src/jsgc.cpp index 68fcd46770..0066ca962e 100644 --- a/js/src/jsgc.cpp +++ b/js/src/jsgc.cpp @@ -6060,12 +6060,6 @@ GCRuntime::checkCanCallAPI() bool GCRuntime::checkIfGCAllowedInCurrentState(JS::gcreason::Reason reason) { - auto isTabCloseReason = [](JS::gcreason::Reason r) { - return r == JS::gcreason::PAGE_HIDE || - r == JS::gcreason::POST_COMPARTMENT || - r == JS::gcreason::NSJSCONTEXT_DESTROY; - }; - if (rt->mainThread.suppressGC) return false; @@ -6074,10 +6068,8 @@ GCRuntime::checkIfGCAllowedInCurrentState(JS::gcreason::Reason reason) if (rt->isBeingDestroyed() && !IsShutdownGC(reason)) return false; - // Allow fast tab-close cleanup even when the runtime is otherwise busy. - if (!isTabCloseReason(reason) && - !IdleGCManager::shouldBypassIdleCheck(reason) && - !idleGC.isIdleEnough()) + // Check if the system is idle enough for GC, unless this is a critical GC + if (!IdleGCManager::shouldBypassIdleCheck(reason) && !idleGC.isIdleEnough()) return false; return true; @@ -6164,16 +6156,8 @@ js::AutoEnqueuePendingParseTasksAfterGC::~AutoEnqueuePendingParseTasksAfterGC() SliceBudget GCRuntime::defaultBudget(JS::gcreason::Reason reason, int64_t millis) { - auto isTabCloseReason = [](JS::gcreason::Reason r) { - return r == JS::gcreason::PAGE_HIDE || - r == JS::gcreason::POST_COMPARTMENT || - r == JS::gcreason::NSJSCONTEXT_DESTROY; - }; - if (millis == 0) { - if (isTabCloseReason(reason)) - millis = 3; - else if (reason == JS::gcreason::ALLOC_TRIGGER) + if (reason == JS::gcreason::ALLOC_TRIGGER) millis = defaultSliceBudget(); else if (schedulingState.inHighFrequencyGCMode() && tunables.isDynamicMarkSliceEnabled()) millis = defaultSliceBudget() * IGC_MARK_SLICE_MULTIPLIER;