This commit is contained in:
dbaron%fas.harvard.edu 2000-02-22 13:25:20 +00:00
Родитель 82879f5510
Коммит 2f80416255
2 изменённых файлов: 16 добавлений и 2 удалений

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

@ -137,6 +137,7 @@ public:
: mClassName(className), mClassSize(classSize) { : mClassName(className), mClassSize(classSize) {
Clear(&mNewStats); Clear(&mNewStats);
Clear(&mAllStats); Clear(&mAllStats);
mTotalLeaked = 0;
} }
~BloatEntry() {} ~BloatEntry() {}
@ -243,6 +244,9 @@ public:
total->mAllStats.mObjsOutstandingSquared += mNewStats.mObjsOutstandingSquared + mAllStats.mObjsOutstandingSquared; total->mAllStats.mObjsOutstandingSquared += mNewStats.mObjsOutstandingSquared + mAllStats.mObjsOutstandingSquared;
PRInt32 count = (mNewStats.mCreates + mAllStats.mCreates); PRInt32 count = (mNewStats.mCreates + mAllStats.mCreates);
total->mClassSize += mClassSize * count; // adjust for average in DumpTotal total->mClassSize += mClassSize * count; // adjust for average in DumpTotal
total->mTotalLeaked += mClassSize *
((mNewStats.mCreates + mAllStats.mCreates)
-(mNewStats.mDestroys + mAllStats.mDestroys));
} }
nsresult DumpTotal(PRUint32 nClasses, FILE* out) { nsresult DumpTotal(PRUint32 nClasses, FILE* out) {
@ -314,7 +318,9 @@ public:
fprintf(out, "%4d %-20.20s %8d %8d %8d %8d (%8.2f +/- %8.2f) %8d %8d (%8.2f +/- %8.2f)\n", fprintf(out, "%4d %-20.20s %8d %8d %8d %8d (%8.2f +/- %8.2f) %8d %8d (%8.2f +/- %8.2f)\n",
i+1, mClassName, i+1, mClassName,
(PRInt32)mClassSize, (PRInt32)mClassSize,
(PRInt32)((stats->mCreates - stats->mDestroys) * mClassSize), (nsCRT::strcmp(mClassName, "TOTAL"))
?(PRInt32)((stats->mCreates - stats->mDestroys) * mClassSize)
:mTotalLeaked,
stats->mCreates, stats->mCreates,
(stats->mCreates - stats->mDestroys), (stats->mCreates - stats->mDestroys),
meanObjs, meanObjs,
@ -330,6 +336,7 @@ public:
protected: protected:
const char* mClassName; const char* mClassName;
double mClassSize; // this is stored as a double because of the way we compute the avg class size for total bloat double mClassSize; // this is stored as a double because of the way we compute the avg class size for total bloat
PRInt32 mTotalLeaked; // used only for TOTAL entry
nsTraceRefcntStats mNewStats; nsTraceRefcntStats mNewStats;
nsTraceRefcntStats mAllStats; nsTraceRefcntStats mAllStats;
}; };

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

@ -137,6 +137,7 @@ public:
: mClassName(className), mClassSize(classSize) { : mClassName(className), mClassSize(classSize) {
Clear(&mNewStats); Clear(&mNewStats);
Clear(&mAllStats); Clear(&mAllStats);
mTotalLeaked = 0;
} }
~BloatEntry() {} ~BloatEntry() {}
@ -243,6 +244,9 @@ public:
total->mAllStats.mObjsOutstandingSquared += mNewStats.mObjsOutstandingSquared + mAllStats.mObjsOutstandingSquared; total->mAllStats.mObjsOutstandingSquared += mNewStats.mObjsOutstandingSquared + mAllStats.mObjsOutstandingSquared;
PRInt32 count = (mNewStats.mCreates + mAllStats.mCreates); PRInt32 count = (mNewStats.mCreates + mAllStats.mCreates);
total->mClassSize += mClassSize * count; // adjust for average in DumpTotal total->mClassSize += mClassSize * count; // adjust for average in DumpTotal
total->mTotalLeaked += mClassSize *
((mNewStats.mCreates + mAllStats.mCreates)
-(mNewStats.mDestroys + mAllStats.mDestroys));
} }
nsresult DumpTotal(PRUint32 nClasses, FILE* out) { nsresult DumpTotal(PRUint32 nClasses, FILE* out) {
@ -314,7 +318,9 @@ public:
fprintf(out, "%4d %-20.20s %8d %8d %8d %8d (%8.2f +/- %8.2f) %8d %8d (%8.2f +/- %8.2f)\n", fprintf(out, "%4d %-20.20s %8d %8d %8d %8d (%8.2f +/- %8.2f) %8d %8d (%8.2f +/- %8.2f)\n",
i+1, mClassName, i+1, mClassName,
(PRInt32)mClassSize, (PRInt32)mClassSize,
(PRInt32)((stats->mCreates - stats->mDestroys) * mClassSize), (nsCRT::strcmp(mClassName, "TOTAL"))
?(PRInt32)((stats->mCreates - stats->mDestroys) * mClassSize)
:mTotalLeaked,
stats->mCreates, stats->mCreates,
(stats->mCreates - stats->mDestroys), (stats->mCreates - stats->mDestroys),
meanObjs, meanObjs,
@ -330,6 +336,7 @@ public:
protected: protected:
const char* mClassName; const char* mClassName;
double mClassSize; // this is stored as a double because of the way we compute the avg class size for total bloat double mClassSize; // this is stored as a double because of the way we compute the avg class size for total bloat
PRInt32 mTotalLeaked; // used only for TOTAL entry
nsTraceRefcntStats mNewStats; nsTraceRefcntStats mNewStats;
nsTraceRefcntStats mAllStats; nsTraceRefcntStats mAllStats;
}; };