Bug 754495, part 7 - indicate if CycleCollectNow is forced. r=smaug

This commit is contained in:
Andrew McCreight 2012-06-27 08:10:20 -07:00
Родитель 1928ad71fe
Коммит fd586ea5d8
2 изменённых файлов: 8 добавлений и 6 удалений

Просмотреть файл

@ -2954,15 +2954,16 @@ nsJSContext::ShrinkGCBuffersNow()
}
static bool
DoMergingCC()
DoMergingCC(bool aForced)
{
return false;
}
//Static
//static
void
nsJSContext::CycleCollectNow(nsICycleCollectorListener *aListener,
PRInt32 aExtraForgetSkippableCalls)
PRInt32 aExtraForgetSkippableCalls,
bool aForced)
{
if (!NS_IsMainThread()) {
return;
@ -2994,7 +2995,7 @@ nsJSContext::CycleCollectNow(nsICycleCollectorListener *aListener,
++sCleanupsSinceLastGC;
}
bool mergingCC = DoMergingCC();
bool mergingCC = DoMergingCC(aForced);
nsCycleCollectorResults ccResults;
nsCycleCollector_collect(mergingCC, &ccResults, aListener);
@ -3197,7 +3198,7 @@ CCTimerFired(nsITimer *aTimer, void *aClosure)
} else {
// We are in the final timer fire and still meet the conditions for
// triggering a CC.
nsJSContext::CycleCollectNow();
nsJSContext::CycleCollectNow(nsnull, 0, false);
}
} else if ((sPreviousSuspectedCount + 100) <= suspected) {
// Only do a forget skippable if there are more than a few new objects.

Просмотреть файл

@ -153,7 +153,8 @@ public:
// If aExtraForgetSkippableCalls is -1, forgetSkippable won't be
// called even if the previous collection was GC.
static void CycleCollectNow(nsICycleCollectorListener *aListener = nsnull,
PRInt32 aExtraForgetSkippableCalls = 0);
PRInt32 aExtraForgetSkippableCalls = 0,
bool aForced = true);
static void PokeGC(js::gcreason::Reason aReason, int aDelay = 0);
static void KillGCTimer();