mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 19:35:51 +00:00
Bug 1005232 - Log number of incremental cycle collector slices. r=smaug
This commit is contained in:
parent
0b5a958dcb
commit
f5a7b92cdc
@ -2089,12 +2089,12 @@ nsJSContext::EndCycleCollectionCallback(CycleCollectorResults &aResults)
|
||||
}
|
||||
|
||||
NS_NAMED_MULTILINE_LITERAL_STRING(kFmt,
|
||||
MOZ_UTF16("CC(T+%.1f) max pause: %lums, total time: %lums, suspected: %lu, visited: %lu RCed and %lu%s GCed, collected: %lu RCed and %lu GCed (%lu|%lu waiting for GC)%s\n")
|
||||
MOZ_UTF16("CC(T+%.1f) max pause: %lums, total time: %lums, slices: %lu, suspected: %lu, visited: %lu RCed and %lu%s GCed, collected: %lu RCed and %lu GCed (%lu|%lu waiting for GC)%s\n")
|
||||
MOZ_UTF16("ForgetSkippable %lu times before CC, min: %lu ms, max: %lu ms, avg: %lu ms, total: %lu ms, max sync: %lu ms, removed: %lu"));
|
||||
nsString msg;
|
||||
msg.Adopt(nsTextFormatter::smprintf(kFmt.get(), double(delta) / PR_USEC_PER_SEC,
|
||||
gCCStats.mMaxSliceTime, gCCStats.mTotalSliceTime,
|
||||
gCCStats.mSuspected,
|
||||
aResults.mNumSlices, gCCStats.mSuspected,
|
||||
aResults.mVisitedRefCounted, aResults.mVisitedGCed, mergeMsg.get(),
|
||||
aResults.mFreedRefCounted, aResults.mFreedGCed,
|
||||
sCCollectedWaitingForGC, sLikelyShortLivingObjectsNeedingGC,
|
||||
|
@ -76,6 +76,13 @@ class IncrementalFinalizeRunnable;
|
||||
// Contains various stats about the cycle collection.
|
||||
struct CycleCollectorResults
|
||||
{
|
||||
CycleCollectorResults()
|
||||
{
|
||||
// Initialize here so when we increment mNumSlices the first time we're
|
||||
// not using uninitialized memory.
|
||||
Init();
|
||||
}
|
||||
|
||||
void Init()
|
||||
{
|
||||
mForcedGC = false;
|
||||
@ -84,6 +91,9 @@ struct CycleCollectorResults
|
||||
mVisitedGCed = 0;
|
||||
mFreedRefCounted = 0;
|
||||
mFreedGCed = 0;
|
||||
mNumSlices = 1;
|
||||
// mNumSlices is initialized to one, because we call Init() after the
|
||||
// per-slice increment of mNumSlices has already occurred.
|
||||
}
|
||||
|
||||
bool mForcedGC;
|
||||
@ -92,6 +102,7 @@ struct CycleCollectorResults
|
||||
uint32_t mVisitedGCed;
|
||||
uint32_t mFreedRefCounted;
|
||||
uint32_t mFreedGCed;
|
||||
uint32_t mNumSlices;
|
||||
};
|
||||
|
||||
class CycleCollectedJSRuntime
|
||||
|
@ -3234,7 +3234,7 @@ nsCycleCollector::CleanupAfterCollection()
|
||||
|
||||
uint32_t interval = (uint32_t) ((TimeStamp::Now() - mCollectionStart).ToMilliseconds());
|
||||
#ifdef COLLECT_TIME_DEBUG
|
||||
printf("cc: total cycle collector time was %ums\n", interval);
|
||||
printf("cc: total cycle collector time was %ums in %u slices\n", interval, mResults.mNumSlices);
|
||||
printf("cc: visited %u ref counted and %u GCed objects, freed %d ref counted and %d GCed objects",
|
||||
mResults.mVisitedRefCounted, mResults.mVisitedGCed,
|
||||
mResults.mFreedRefCounted, mResults.mFreedGCed);
|
||||
@ -3300,6 +3300,8 @@ nsCycleCollector::Collect(ccType aCCType,
|
||||
FreeSnowWhite(true);
|
||||
}
|
||||
|
||||
++mResults.mNumSlices;
|
||||
|
||||
bool finished = false;
|
||||
do {
|
||||
switch (mIncrementalPhase) {
|
||||
|
Loading…
Reference in New Issue
Block a user