void TelemetryImpl::StoreSlowSQL(const nsACString &sql, uint32_t delay, bool isDynamicSql, bool isTrackedDB, bool isAggregate) { AutoHashtable<SlowSQLEntryType> *slowSQLMap = NULL; if (NS_IsMainThread()) slowSQLMap = &(sTelemetry->mSlowSQLOnMainThread); else slowSQLMap = &(sTelemetry->mSlowSQLOnOtherThread); MutexAutoLock hashMutex(sTelemetry->mHashMutex); SlowSQLEntryType *entry = slowSQLMap->GetEntry(sql); if (!entry) { entry = slowSQLMap->PutEntry(sql); if (NS_UNLIKELY(!entry)) return; entry->mData.isDynamicSql = isDynamicSql; entry->mData.isTrackedDb = isTrackedDB; entry->mData.isAggregate = isAggregate; entry->mData.hitCount = 0; entry->mData.totalTime = 0; } entry->mData.hitCount++; entry->mData.totalTime += delay; }
void TelemetryImpl::RecordSlowStatement(const nsACString &statement, const nsACString &dbName, PRUint32 delay) { MOZ_ASSERT(sTelemetry); if (!sTelemetry->mCanRecord || !sTelemetry->mTrackedDBs.GetEntry(dbName)) return; AutoHashtable<SlowSQLEntryType> *slowSQLMap = NULL; if (NS_IsMainThread()) slowSQLMap = &(sTelemetry->mSlowSQLOnMainThread); else slowSQLMap = &(sTelemetry->mSlowSQLOnOtherThread); MutexAutoLock hashMutex(sTelemetry->mHashMutex); SlowSQLEntryType *entry = slowSQLMap->GetEntry(statement); if (!entry) { entry = slowSQLMap->PutEntry(statement); if (NS_UNLIKELY(!entry)) return; entry->mData.hitCount = 0; entry->mData.totalTime = 0; } entry->mData.hitCount++; entry->mData.totalTime += delay; }