diff --git a/content/base/src/nsStyleSet.cpp b/content/base/src/nsStyleSet.cpp index 23199b460e5..7472ff0ddb1 100644 --- a/content/base/src/nsStyleSet.cpp +++ b/content/base/src/nsStyleSet.cpp @@ -36,7 +36,14 @@ #include "nsLayoutAtoms.h" #include "nsTimer.h" #ifdef MOZ_PERF_METRICS -#include "nsITimeRecorder.h" + #include "nsITimeRecorder.h" + #define STYLESET_START_TIMER(a) \ + StartTimer(a) + #define STYLESET_STOP_TIMER(a) \ + StopTimer(a) +#else + #define STYLESET_START_TIMER(a) ((void)0) + #define STYLESET_STOP_TIMER(a) ((void)0) #endif static NS_DEFINE_IID(kIStyleSetIID, NS_ISTYLE_SET_IID); @@ -201,6 +208,11 @@ protected: nsIStyleFrameConstruction* mFrameConstructor; MOZ_TIMER_DECLARE(mStyleResolutionWatch) + +#ifdef MOZ_PERF_METRICS + PRBool mTimerEnabled; // true if timing is enabled, false if disabled +#endif + }; StyleSetImpl::StyleSetImpl() @@ -210,6 +222,9 @@ StyleSetImpl::StyleSetImpl() mRuleProcessors(nsnull), mRecycler(nsnull), mFrameConstructor(nsnull) +#ifdef MOZ_PERF_METRICS + ,mTimerEnabled(PR_FALSE) +#endif { NS_INIT_REFCNT(); } @@ -620,7 +635,8 @@ nsIStyleContext* StyleSetImpl::ResolveStyleFor(nsIPresContext* aPresContext, PRBool aForceUnique) { MOZ_TIMER_DEBUGLOG(("Start: StyleSetImpl::ResolveStyleFor(), this=%p\n", this)); - MOZ_TIMER_START(mStyleResolutionWatch); + STYLESET_START_TIMER(NS_TIMER_STYLE_RESOLUTION); + nsIStyleContext* result = nsnull; NS_ASSERTION(aContent, "must have content"); @@ -664,7 +680,7 @@ nsIStyleContext* StyleSetImpl::ResolveStyleFor(nsIPresContext* aPresContext, } MOZ_TIMER_DEBUGLOG(("Stop: StyleSetImpl::ResolveStyleFor(), this=%p\n", this)); - MOZ_TIMER_STOP(mStyleResolutionWatch); + STYLESET_STOP_TIMER(NS_TIMER_STYLE_RESOLUTION); return result; } @@ -710,7 +726,8 @@ nsIStyleContext* StyleSetImpl::ResolvePseudoStyleFor(nsIPresContext* aPresContex PRBool aForceUnique) { MOZ_TIMER_DEBUGLOG(("Start: StyleSetImpl::ResolvePseudoStyleFor(), this=%p\n", this)); - MOZ_TIMER_START(mStyleResolutionWatch); + STYLESET_START_TIMER(NS_TIMER_STYLE_RESOLUTION); + nsIStyleContext* result = nsnull; NS_ASSERTION(aPseudoTag, "must have pseudo tag"); @@ -756,7 +773,7 @@ nsIStyleContext* StyleSetImpl::ResolvePseudoStyleFor(nsIPresContext* aPresContex } MOZ_TIMER_DEBUGLOG(("Stop: StyleSetImpl::ResolvePseudoStyleFor(), this=%p\n", this)); - MOZ_TIMER_STOP(mStyleResolutionWatch); + STYLESET_STOP_TIMER(NS_TIMER_STYLE_RESOLUTION); return result; } @@ -767,7 +784,8 @@ nsIStyleContext* StyleSetImpl::ProbePseudoStyleFor(nsIPresContext* aPresContext, PRBool aForceUnique) { MOZ_TIMER_DEBUGLOG(("Start: StyleSetImpl::ProbePseudoStyleFor(), this=%p\n", this)); - MOZ_TIMER_START(mStyleResolutionWatch); + STYLESET_START_TIMER(NS_TIMER_STYLE_RESOLUTION); + nsIStyleContext* result = nsnull; NS_ASSERTION(aPseudoTag, "must have pseudo tag"); @@ -812,7 +830,7 @@ nsIStyleContext* StyleSetImpl::ProbePseudoStyleFor(nsIPresContext* aPresContext, } MOZ_TIMER_DEBUGLOG(("Stop: StyleSetImpl::ProbePseudoStyleFor(), this=%p\n", this)); - MOZ_TIMER_STOP(mStyleResolutionWatch); + STYLESET_STOP_TIMER(NS_TIMER_STYLE_RESOLUTION); return result; } @@ -1105,6 +1123,52 @@ NS_NewStyleSet(nsIStyleSet** aInstancePtrResult) // nsITimeRecorder implementation #ifdef MOZ_PERF_METRICS + +NS_IMETHODIMP +StyleSetImpl::EnableTimer(PRUint32 aTimerID) +{ + nsresult rv = NS_OK; + + if (NS_TIMER_STYLE_RESOLUTION == aTimerID) { + mTimerEnabled = PR_TRUE; + } + else + rv = NS_ERROR_NOT_IMPLEMENTED; + + return rv; +} + +NS_IMETHODIMP +StyleSetImpl::DisableTimer(PRUint32 aTimerID) +{ + nsresult rv = NS_OK; + + if (NS_TIMER_STYLE_RESOLUTION == aTimerID) { + mTimerEnabled = PR_FALSE; + } + else + rv = NS_ERROR_NOT_IMPLEMENTED; + + return rv; +} + +NS_IMETHODIMP +StyleSetImpl::IsTimerEnabled(PRBool *aIsEnabled, PRUint32 aTimerID) +{ + NS_ASSERTION(aIsEnabled != nsnull, "aIsEnabled paramter cannot be null" ); + nsresult rv = NS_OK; + + if (NS_TIMER_STYLE_RESOLUTION == aTimerID) { + if (*aIsEnabled != nsnull) { + *aIsEnabled = mTimerEnabled; + } + } + else + rv = NS_ERROR_NOT_IMPLEMENTED; + + return rv; +} + NS_IMETHODIMP StyleSetImpl::ResetTimer(PRUint32 aTimerID) { @@ -1125,7 +1189,14 @@ StyleSetImpl::StartTimer(PRUint32 aTimerID) nsresult rv = NS_OK; if (NS_TIMER_STYLE_RESOLUTION == aTimerID) { - MOZ_TIMER_START(mStyleResolutionWatch); + // only do it if enabled + if (mTimerEnabled) { + MOZ_TIMER_START(mStyleResolutionWatch); + } else { +#ifdef _DEBUG + // printf( "Attempt to start timer while disabled - ignoring\n" ); +#endif + } } else rv = NS_ERROR_NOT_IMPLEMENTED; @@ -1139,7 +1210,14 @@ StyleSetImpl::StopTimer(PRUint32 aTimerID) nsresult rv = NS_OK; if (NS_TIMER_STYLE_RESOLUTION == aTimerID) { - MOZ_TIMER_STOP(mStyleResolutionWatch); + // only do it if enabled + if (mTimerEnabled) { + MOZ_TIMER_STOP(mStyleResolutionWatch); + } else { +#ifdef _DEBUG + // printf( "Attempt to stop timer while disabled - ignoring\n" ); +#endif + } } else rv = NS_ERROR_NOT_IMPLEMENTED; diff --git a/layout/base/src/nsStyleSet.cpp b/layout/base/src/nsStyleSet.cpp index 23199b460e5..7472ff0ddb1 100644 --- a/layout/base/src/nsStyleSet.cpp +++ b/layout/base/src/nsStyleSet.cpp @@ -36,7 +36,14 @@ #include "nsLayoutAtoms.h" #include "nsTimer.h" #ifdef MOZ_PERF_METRICS -#include "nsITimeRecorder.h" + #include "nsITimeRecorder.h" + #define STYLESET_START_TIMER(a) \ + StartTimer(a) + #define STYLESET_STOP_TIMER(a) \ + StopTimer(a) +#else + #define STYLESET_START_TIMER(a) ((void)0) + #define STYLESET_STOP_TIMER(a) ((void)0) #endif static NS_DEFINE_IID(kIStyleSetIID, NS_ISTYLE_SET_IID); @@ -201,6 +208,11 @@ protected: nsIStyleFrameConstruction* mFrameConstructor; MOZ_TIMER_DECLARE(mStyleResolutionWatch) + +#ifdef MOZ_PERF_METRICS + PRBool mTimerEnabled; // true if timing is enabled, false if disabled +#endif + }; StyleSetImpl::StyleSetImpl() @@ -210,6 +222,9 @@ StyleSetImpl::StyleSetImpl() mRuleProcessors(nsnull), mRecycler(nsnull), mFrameConstructor(nsnull) +#ifdef MOZ_PERF_METRICS + ,mTimerEnabled(PR_FALSE) +#endif { NS_INIT_REFCNT(); } @@ -620,7 +635,8 @@ nsIStyleContext* StyleSetImpl::ResolveStyleFor(nsIPresContext* aPresContext, PRBool aForceUnique) { MOZ_TIMER_DEBUGLOG(("Start: StyleSetImpl::ResolveStyleFor(), this=%p\n", this)); - MOZ_TIMER_START(mStyleResolutionWatch); + STYLESET_START_TIMER(NS_TIMER_STYLE_RESOLUTION); + nsIStyleContext* result = nsnull; NS_ASSERTION(aContent, "must have content"); @@ -664,7 +680,7 @@ nsIStyleContext* StyleSetImpl::ResolveStyleFor(nsIPresContext* aPresContext, } MOZ_TIMER_DEBUGLOG(("Stop: StyleSetImpl::ResolveStyleFor(), this=%p\n", this)); - MOZ_TIMER_STOP(mStyleResolutionWatch); + STYLESET_STOP_TIMER(NS_TIMER_STYLE_RESOLUTION); return result; } @@ -710,7 +726,8 @@ nsIStyleContext* StyleSetImpl::ResolvePseudoStyleFor(nsIPresContext* aPresContex PRBool aForceUnique) { MOZ_TIMER_DEBUGLOG(("Start: StyleSetImpl::ResolvePseudoStyleFor(), this=%p\n", this)); - MOZ_TIMER_START(mStyleResolutionWatch); + STYLESET_START_TIMER(NS_TIMER_STYLE_RESOLUTION); + nsIStyleContext* result = nsnull; NS_ASSERTION(aPseudoTag, "must have pseudo tag"); @@ -756,7 +773,7 @@ nsIStyleContext* StyleSetImpl::ResolvePseudoStyleFor(nsIPresContext* aPresContex } MOZ_TIMER_DEBUGLOG(("Stop: StyleSetImpl::ResolvePseudoStyleFor(), this=%p\n", this)); - MOZ_TIMER_STOP(mStyleResolutionWatch); + STYLESET_STOP_TIMER(NS_TIMER_STYLE_RESOLUTION); return result; } @@ -767,7 +784,8 @@ nsIStyleContext* StyleSetImpl::ProbePseudoStyleFor(nsIPresContext* aPresContext, PRBool aForceUnique) { MOZ_TIMER_DEBUGLOG(("Start: StyleSetImpl::ProbePseudoStyleFor(), this=%p\n", this)); - MOZ_TIMER_START(mStyleResolutionWatch); + STYLESET_START_TIMER(NS_TIMER_STYLE_RESOLUTION); + nsIStyleContext* result = nsnull; NS_ASSERTION(aPseudoTag, "must have pseudo tag"); @@ -812,7 +830,7 @@ nsIStyleContext* StyleSetImpl::ProbePseudoStyleFor(nsIPresContext* aPresContext, } MOZ_TIMER_DEBUGLOG(("Stop: StyleSetImpl::ProbePseudoStyleFor(), this=%p\n", this)); - MOZ_TIMER_STOP(mStyleResolutionWatch); + STYLESET_STOP_TIMER(NS_TIMER_STYLE_RESOLUTION); return result; } @@ -1105,6 +1123,52 @@ NS_NewStyleSet(nsIStyleSet** aInstancePtrResult) // nsITimeRecorder implementation #ifdef MOZ_PERF_METRICS + +NS_IMETHODIMP +StyleSetImpl::EnableTimer(PRUint32 aTimerID) +{ + nsresult rv = NS_OK; + + if (NS_TIMER_STYLE_RESOLUTION == aTimerID) { + mTimerEnabled = PR_TRUE; + } + else + rv = NS_ERROR_NOT_IMPLEMENTED; + + return rv; +} + +NS_IMETHODIMP +StyleSetImpl::DisableTimer(PRUint32 aTimerID) +{ + nsresult rv = NS_OK; + + if (NS_TIMER_STYLE_RESOLUTION == aTimerID) { + mTimerEnabled = PR_FALSE; + } + else + rv = NS_ERROR_NOT_IMPLEMENTED; + + return rv; +} + +NS_IMETHODIMP +StyleSetImpl::IsTimerEnabled(PRBool *aIsEnabled, PRUint32 aTimerID) +{ + NS_ASSERTION(aIsEnabled != nsnull, "aIsEnabled paramter cannot be null" ); + nsresult rv = NS_OK; + + if (NS_TIMER_STYLE_RESOLUTION == aTimerID) { + if (*aIsEnabled != nsnull) { + *aIsEnabled = mTimerEnabled; + } + } + else + rv = NS_ERROR_NOT_IMPLEMENTED; + + return rv; +} + NS_IMETHODIMP StyleSetImpl::ResetTimer(PRUint32 aTimerID) { @@ -1125,7 +1189,14 @@ StyleSetImpl::StartTimer(PRUint32 aTimerID) nsresult rv = NS_OK; if (NS_TIMER_STYLE_RESOLUTION == aTimerID) { - MOZ_TIMER_START(mStyleResolutionWatch); + // only do it if enabled + if (mTimerEnabled) { + MOZ_TIMER_START(mStyleResolutionWatch); + } else { +#ifdef _DEBUG + // printf( "Attempt to start timer while disabled - ignoring\n" ); +#endif + } } else rv = NS_ERROR_NOT_IMPLEMENTED; @@ -1139,7 +1210,14 @@ StyleSetImpl::StopTimer(PRUint32 aTimerID) nsresult rv = NS_OK; if (NS_TIMER_STYLE_RESOLUTION == aTimerID) { - MOZ_TIMER_STOP(mStyleResolutionWatch); + // only do it if enabled + if (mTimerEnabled) { + MOZ_TIMER_STOP(mStyleResolutionWatch); + } else { +#ifdef _DEBUG + // printf( "Attempt to stop timer while disabled - ignoring\n" ); +#endif + } } else rv = NS_ERROR_NOT_IMPLEMENTED; diff --git a/layout/style/nsStyleSet.cpp b/layout/style/nsStyleSet.cpp index 23199b460e5..7472ff0ddb1 100644 --- a/layout/style/nsStyleSet.cpp +++ b/layout/style/nsStyleSet.cpp @@ -36,7 +36,14 @@ #include "nsLayoutAtoms.h" #include "nsTimer.h" #ifdef MOZ_PERF_METRICS -#include "nsITimeRecorder.h" + #include "nsITimeRecorder.h" + #define STYLESET_START_TIMER(a) \ + StartTimer(a) + #define STYLESET_STOP_TIMER(a) \ + StopTimer(a) +#else + #define STYLESET_START_TIMER(a) ((void)0) + #define STYLESET_STOP_TIMER(a) ((void)0) #endif static NS_DEFINE_IID(kIStyleSetIID, NS_ISTYLE_SET_IID); @@ -201,6 +208,11 @@ protected: nsIStyleFrameConstruction* mFrameConstructor; MOZ_TIMER_DECLARE(mStyleResolutionWatch) + +#ifdef MOZ_PERF_METRICS + PRBool mTimerEnabled; // true if timing is enabled, false if disabled +#endif + }; StyleSetImpl::StyleSetImpl() @@ -210,6 +222,9 @@ StyleSetImpl::StyleSetImpl() mRuleProcessors(nsnull), mRecycler(nsnull), mFrameConstructor(nsnull) +#ifdef MOZ_PERF_METRICS + ,mTimerEnabled(PR_FALSE) +#endif { NS_INIT_REFCNT(); } @@ -620,7 +635,8 @@ nsIStyleContext* StyleSetImpl::ResolveStyleFor(nsIPresContext* aPresContext, PRBool aForceUnique) { MOZ_TIMER_DEBUGLOG(("Start: StyleSetImpl::ResolveStyleFor(), this=%p\n", this)); - MOZ_TIMER_START(mStyleResolutionWatch); + STYLESET_START_TIMER(NS_TIMER_STYLE_RESOLUTION); + nsIStyleContext* result = nsnull; NS_ASSERTION(aContent, "must have content"); @@ -664,7 +680,7 @@ nsIStyleContext* StyleSetImpl::ResolveStyleFor(nsIPresContext* aPresContext, } MOZ_TIMER_DEBUGLOG(("Stop: StyleSetImpl::ResolveStyleFor(), this=%p\n", this)); - MOZ_TIMER_STOP(mStyleResolutionWatch); + STYLESET_STOP_TIMER(NS_TIMER_STYLE_RESOLUTION); return result; } @@ -710,7 +726,8 @@ nsIStyleContext* StyleSetImpl::ResolvePseudoStyleFor(nsIPresContext* aPresContex PRBool aForceUnique) { MOZ_TIMER_DEBUGLOG(("Start: StyleSetImpl::ResolvePseudoStyleFor(), this=%p\n", this)); - MOZ_TIMER_START(mStyleResolutionWatch); + STYLESET_START_TIMER(NS_TIMER_STYLE_RESOLUTION); + nsIStyleContext* result = nsnull; NS_ASSERTION(aPseudoTag, "must have pseudo tag"); @@ -756,7 +773,7 @@ nsIStyleContext* StyleSetImpl::ResolvePseudoStyleFor(nsIPresContext* aPresContex } MOZ_TIMER_DEBUGLOG(("Stop: StyleSetImpl::ResolvePseudoStyleFor(), this=%p\n", this)); - MOZ_TIMER_STOP(mStyleResolutionWatch); + STYLESET_STOP_TIMER(NS_TIMER_STYLE_RESOLUTION); return result; } @@ -767,7 +784,8 @@ nsIStyleContext* StyleSetImpl::ProbePseudoStyleFor(nsIPresContext* aPresContext, PRBool aForceUnique) { MOZ_TIMER_DEBUGLOG(("Start: StyleSetImpl::ProbePseudoStyleFor(), this=%p\n", this)); - MOZ_TIMER_START(mStyleResolutionWatch); + STYLESET_START_TIMER(NS_TIMER_STYLE_RESOLUTION); + nsIStyleContext* result = nsnull; NS_ASSERTION(aPseudoTag, "must have pseudo tag"); @@ -812,7 +830,7 @@ nsIStyleContext* StyleSetImpl::ProbePseudoStyleFor(nsIPresContext* aPresContext, } MOZ_TIMER_DEBUGLOG(("Stop: StyleSetImpl::ProbePseudoStyleFor(), this=%p\n", this)); - MOZ_TIMER_STOP(mStyleResolutionWatch); + STYLESET_STOP_TIMER(NS_TIMER_STYLE_RESOLUTION); return result; } @@ -1105,6 +1123,52 @@ NS_NewStyleSet(nsIStyleSet** aInstancePtrResult) // nsITimeRecorder implementation #ifdef MOZ_PERF_METRICS + +NS_IMETHODIMP +StyleSetImpl::EnableTimer(PRUint32 aTimerID) +{ + nsresult rv = NS_OK; + + if (NS_TIMER_STYLE_RESOLUTION == aTimerID) { + mTimerEnabled = PR_TRUE; + } + else + rv = NS_ERROR_NOT_IMPLEMENTED; + + return rv; +} + +NS_IMETHODIMP +StyleSetImpl::DisableTimer(PRUint32 aTimerID) +{ + nsresult rv = NS_OK; + + if (NS_TIMER_STYLE_RESOLUTION == aTimerID) { + mTimerEnabled = PR_FALSE; + } + else + rv = NS_ERROR_NOT_IMPLEMENTED; + + return rv; +} + +NS_IMETHODIMP +StyleSetImpl::IsTimerEnabled(PRBool *aIsEnabled, PRUint32 aTimerID) +{ + NS_ASSERTION(aIsEnabled != nsnull, "aIsEnabled paramter cannot be null" ); + nsresult rv = NS_OK; + + if (NS_TIMER_STYLE_RESOLUTION == aTimerID) { + if (*aIsEnabled != nsnull) { + *aIsEnabled = mTimerEnabled; + } + } + else + rv = NS_ERROR_NOT_IMPLEMENTED; + + return rv; +} + NS_IMETHODIMP StyleSetImpl::ResetTimer(PRUint32 aTimerID) { @@ -1125,7 +1189,14 @@ StyleSetImpl::StartTimer(PRUint32 aTimerID) nsresult rv = NS_OK; if (NS_TIMER_STYLE_RESOLUTION == aTimerID) { - MOZ_TIMER_START(mStyleResolutionWatch); + // only do it if enabled + if (mTimerEnabled) { + MOZ_TIMER_START(mStyleResolutionWatch); + } else { +#ifdef _DEBUG + // printf( "Attempt to start timer while disabled - ignoring\n" ); +#endif + } } else rv = NS_ERROR_NOT_IMPLEMENTED; @@ -1139,7 +1210,14 @@ StyleSetImpl::StopTimer(PRUint32 aTimerID) nsresult rv = NS_OK; if (NS_TIMER_STYLE_RESOLUTION == aTimerID) { - MOZ_TIMER_STOP(mStyleResolutionWatch); + // only do it if enabled + if (mTimerEnabled) { + MOZ_TIMER_STOP(mStyleResolutionWatch); + } else { +#ifdef _DEBUG + // printf( "Attempt to stop timer while disabled - ignoring\n" ); +#endif + } } else rv = NS_ERROR_NOT_IMPLEMENTED;