Bug 706164 - Add telemetry for CC forcing GC. r=bent

This commit is contained in:
Andrew McCreight 2011-12-05 09:04:41 -08:00
parent 7e9e591514
commit 819c130dad
2 changed files with 8 additions and 2 deletions

View File

@ -66,6 +66,7 @@ HISTOGRAM(CYCLE_COLLECTOR, 1, 10000, 50, EXPONENTIAL, "Time spent on one cycle c
HISTOGRAM(CYCLE_COLLECTOR_VISITED_REF_COUNTED, 1, 300000, 50, EXPONENTIAL, "Number of ref counted objects visited by the cycle collector")
HISTOGRAM(CYCLE_COLLECTOR_VISITED_GCED, 1, 300000, 50, EXPONENTIAL, "Number of JS objects visited by the cycle collector")
HISTOGRAM(CYCLE_COLLECTOR_COLLECTED, 1, 100000, 50, EXPONENTIAL, "Number of objects collected by the cycle collector")
HISTOGRAM_BOOLEAN(CYCLE_COLLECTOR_NEED_GC, "Needed garbage collection before cycle collection.")
/**
* GC telemetry

View File

@ -2685,8 +2685,13 @@ nsCycleCollector::GCIfNeeded(bool aForceGC)
nsCycleCollectionJSRuntime* rt =
static_cast<nsCycleCollectionJSRuntime*>
(mRuntimes[nsIProgrammingLanguage::JAVASCRIPT]);
if (!rt->NeedCollect() && !aForceGC)
return;
if (!aForceGC) {
bool needGC = rt->NeedCollect();
// Only do a telemetry ping for non-shutdown CCs.
Telemetry::Accumulate(Telemetry::CYCLE_COLLECTOR_NEED_GC, needGC);
if (!needGC)
return;
}
#ifdef COLLECT_TIME_DEBUG
PRTime start = PR_Now();