diff --git a/mozilla/content/html/document/src/nsHTMLContentSink.cpp b/mozilla/content/html/document/src/nsHTMLContentSink.cpp
index 7f63278ae3a..de33f0b992e 100644
--- a/mozilla/content/html/document/src/nsHTMLContentSink.cpp
+++ b/mozilla/content/html/document/src/nsHTMLContentSink.cpp
@@ -1661,6 +1661,17 @@ HTMLContentSink::Init(nsIDocument* aDoc,
nsIWebShell* aContainer)
{
// NRA Dump document and stopwatch start info here
+#ifdef DEBUG_nisheeth
+ {
+ char* url;
+ nsresult rv = NS_OK;
+ rv = aURL->GetSpec(&url);
+ if (NS_SUCCEEDED(rv)) {
+ printf("Starting stopwatch for '%s'", url);
+ delete [] url;
+ }
+ }
+#endif
NS_RESET_AND_START_STOPWATCH()
NS_PRECONDITION(nsnull != aDoc, "null ptr");
@@ -1747,6 +1758,9 @@ NS_IMETHODIMP
HTMLContentSink::DidBuildModel(PRInt32 aQualityLevel)
{
// NRA Dump stopwatch stop info here
+#ifdef RAPTOR_PERF_METRICS
+ mWatch.Print();
+#endif
if (nsnull == mTitle) {
mHTMLDocument->SetTitle("");
@@ -1818,11 +1832,13 @@ HTMLContentSink::SetParser(nsIParser* aParser)
NS_IMETHODIMP
HTMLContentSink::BeginContext(PRInt32 aPosition)
{
+ NS_START_STOPWATCH()
NS_PRECONDITION(aPosition > -1, "out of bounds");
// Create new context
SinkContext* sc = new SinkContext(this);
if (nsnull == sc) {
+ NS_STOP_STOPWATCH()
return NS_ERROR_OUT_OF_MEMORY;
}
@@ -1835,12 +1851,14 @@ HTMLContentSink::BeginContext(PRInt32 aPosition)
mContextStack.AppendElement(mCurrentContext);
mCurrentContext = sc;
+ NS_STOP_STOPWATCH()
return NS_OK;
}
NS_IMETHODIMP
HTMLContentSink::EndContext(PRInt32 aPosition)
{
+ NS_START_STOPWATCH()
NS_PRECONDITION(mCurrentContext != nsnull && aPosition > -1, "non-existing context");
PRInt32 n = mContextStack.Count() - 1;
@@ -1865,7 +1883,7 @@ HTMLContentSink::EndContext(PRInt32 aPosition)
mCurrentContext = sc;
mContextStack.RemoveElementAt(n);
-
+ NS_STOP_STOPWATCH()
return NS_OK;
}
@@ -1873,6 +1891,7 @@ HTMLContentSink::EndContext(PRInt32 aPosition)
NS_IMETHODIMP
HTMLContentSink::SetTitle(const nsString& aValue)
{
+ NS_START_STOPWATCH()
NS_ASSERTION(mCurrentContext == mHeadContext, "SetTitle not in head");
if (nsnull == mTitle) {
@@ -1882,6 +1901,7 @@ HTMLContentSink::SetTitle(const nsString& aValue)
// If the title was already set then don't try to overwrite it
// when a new title is encountered - For backwards compatiblity
//*mTitle = aValue;
+ NS_STOP_STOPWATCH()
return NS_OK;
}
ReduceEntities(*mTitle);
@@ -1909,20 +1929,25 @@ HTMLContentSink::SetTitle(const nsString& aValue)
NS_RELEASE(it);
}
NS_RELEASE(atom);
+ NS_STOP_STOPWATCH()
return NS_OK;
}
NS_IMETHODIMP
HTMLContentSink::OpenHTML(const nsIParserNode& aNode)
{
+ NS_START_STOPWATCH()
SINK_TRACE_NODE(SINK_TRACE_CALLS,
"HTMLContentSink::OpenHTML", aNode);
+
+ NS_STOP_STOPWATCH()
return NS_OK;
}
NS_IMETHODIMP
HTMLContentSink::CloseHTML(const nsIParserNode& aNode)
{
+ NS_START_STOPWATCH()
SINK_TRACE_NODE(SINK_TRACE_CALLS,
"HTMLContentSink::CloseHTML", aNode);
if (nsnull != mHeadContext) {
@@ -1930,23 +1955,27 @@ HTMLContentSink::CloseHTML(const nsIParserNode& aNode)
delete mHeadContext;
mHeadContext = nsnull;
}
+ NS_STOP_STOPWATCH()
return NS_OK;
}
NS_IMETHODIMP
HTMLContentSink::OpenHead(const nsIParserNode& aNode)
{
+ NS_START_STOPWATCH()
SINK_TRACE_NODE(SINK_TRACE_CALLS,
"HTMLContentSink::OpenHead", aNode);
nsresult rv = NS_OK;
if (nsnull == mHeadContext) {
mHeadContext = new SinkContext(this);
if (nsnull == mHeadContext) {
+ NS_STOP_STOPWATCH()
return NS_ERROR_OUT_OF_MEMORY;
}
mHeadContext->SetPreAppend(PR_TRUE);
rv = mHeadContext->Begin(eHTMLTag_head, mHead);
if (NS_OK != rv) {
+ NS_STOP_STOPWATCH()
return rv;
}
}
@@ -1959,23 +1988,27 @@ HTMLContentSink::OpenHead(const nsIParserNode& aNode)
NS_IF_RELEASE(sco);
}
+ NS_STOP_STOPWATCH()
return rv;
}
NS_IMETHODIMP
HTMLContentSink::CloseHead(const nsIParserNode& aNode)
{
+ NS_START_STOPWATCH()
SINK_TRACE_NODE(SINK_TRACE_CALLS,
"HTMLContentSink::CloseHead", aNode);
PRInt32 n = mContextStack.Count() - 1;
mCurrentContext = (SinkContext*) mContextStack.ElementAt(n);
mContextStack.RemoveElementAt(n);
+ NS_STOP_STOPWATCH()
return NS_OK;
}
NS_IMETHODIMP
HTMLContentSink::OpenBody(const nsIParserNode& aNode)
{
+ NS_START_STOPWATCH()
//NS_PRECONDITION(nsnull == mBody, "parser called OpenBody twice");
SINK_TRACE_NODE(SINK_TRACE_CALLS,
@@ -1984,7 +2017,8 @@ HTMLContentSink::OpenBody(const nsIParserNode& aNode)
if(mBody != nsnull){
nsIScriptContextOwner* sco = mDocument->GetScriptContextOwner();
AddAttributes(aNode,mBody,sco,PR_TRUE);
- NS_IF_RELEASE(sco);
+ NS_IF_RELEASE(sco);
+ NS_STOP_STOPWATCH()
return NS_OK;
}
@@ -1994,12 +2028,14 @@ HTMLContentSink::OpenBody(const nsIParserNode& aNode)
nsresult rv = mCurrentContext->OpenContainer(aNode);
mCurrentContext->SetPreAppend(PR_FALSE);
if (NS_OK != rv) {
+ NS_STOP_STOPWATCH()
return rv;
}
mBody = mCurrentContext->mStack[mCurrentContext->mStackPos - 1].mContent;
mBodyChildCount = 0;
NS_ADDREF(mBody);
+ NS_STOP_STOPWATCH()
StartLayout();
return NS_OK;
}
@@ -2007,12 +2043,14 @@ HTMLContentSink::OpenBody(const nsIParserNode& aNode)
NS_IMETHODIMP
HTMLContentSink::CloseBody(const nsIParserNode& aNode)
{
+ NS_START_STOPWATCH()
SINK_TRACE_NODE(SINK_TRACE_CALLS,
"HTMLContentSink::CloseBody", aNode);
PRBool didFlush;
nsresult rv = mCurrentContext->FlushText(&didFlush);
if (NS_OK != rv) {
+ NS_STOP_STOPWATCH()
return rv;
}
mCurrentContext->CloseContainer(aNode);
@@ -2022,12 +2060,14 @@ HTMLContentSink::CloseBody(const nsIParserNode& aNode)
NotifyBody();
}
+ NS_STOP_STOPWATCH()
return NS_OK;
}
NS_IMETHODIMP
HTMLContentSink::OpenForm(const nsIParserNode& aNode)
{
+ NS_START_STOPWATCH()
nsresult result = NS_OK;
nsIHTMLContent* content = nsnull;
@@ -2080,6 +2120,7 @@ HTMLContentSink::OpenForm(const nsIParserNode& aNode)
mHTMLDocument->AddForm(mCurrentForm);
}
+ NS_STOP_STOPWATCH()
return result;
}
@@ -2088,6 +2129,7 @@ HTMLContentSink::OpenForm(const nsIParserNode& aNode)
NS_IMETHODIMP
HTMLContentSink::CloseForm(const nsIParserNode& aNode)
{
+ NS_START_STOPWATCH()
nsresult result = NS_OK;
mCurrentContext->FlushText();
@@ -2112,12 +2154,14 @@ HTMLContentSink::CloseForm(const nsIParserNode& aNode)
NS_RELEASE(mCurrentForm);
}
+ NS_STOP_STOPWATCH()
return result;
}
NS_IMETHODIMP
HTMLContentSink::OpenFrameset(const nsIParserNode& aNode)
{
+ NS_START_STOPWATCH()
SINK_TRACE_NODE(SINK_TRACE_CALLS,
"HTMLContentSink::OpenFrameset", aNode);
@@ -2127,12 +2171,14 @@ HTMLContentSink::OpenFrameset(const nsIParserNode& aNode)
NS_ADDREF(mFrameset);
}
mInMonolithicContainer++;
+ NS_STOP_STOPWATCH()
return rv;
}
NS_IMETHODIMP
HTMLContentSink::CloseFrameset(const nsIParserNode& aNode)
{
+ NS_START_STOPWATCH()
SINK_TRACE_NODE(SINK_TRACE_CALLS,
"HTMLContentSink::CloseFrameset", aNode);
@@ -2140,6 +2186,7 @@ HTMLContentSink::CloseFrameset(const nsIParserNode& aNode)
nsIHTMLContent* fs = sc->mStack[sc->mStackPos-1].mContent;
PRBool done = fs == mFrameset;
nsresult rv = sc->CloseContainer(aNode);
+ NS_STOP_STOPWATCH()
if (done) {
StartLayout();
}
@@ -2149,24 +2196,32 @@ HTMLContentSink::CloseFrameset(const nsIParserNode& aNode)
NS_IMETHODIMP
HTMLContentSink::OpenMap(const nsIParserNode& aNode)
{
+ NS_START_STOPWATCH()
+ nsresult rv = NS_OK;
SINK_TRACE_NODE(SINK_TRACE_CALLS,
"HTMLContentSink::OpenMap", aNode);
// We used to treat MAP elements specially (i.e. they were
// only parent elements for AREAs), but we don't anymore.
// HTML 4.0 says that MAP elements can have block content
// as children.
- return mCurrentContext->OpenContainer(aNode);
+ rv = mCurrentContext->OpenContainer(aNode);
+ NS_STOP_STOPWATCH()
+ return rv;
}
NS_IMETHODIMP
HTMLContentSink::CloseMap(const nsIParserNode& aNode)
{
+ NS_START_STOPWATCH()
+ nsresult rv = NS_OK;
SINK_TRACE_NODE(SINK_TRACE_CALLS,
"HTMLContentSink::CloseMap", aNode);
NS_IF_RELEASE(mCurrentMap);
NS_IF_RELEASE(mCurrentDOMMap);
- return mCurrentContext->CloseContainer(aNode);
+ rv = mCurrentContext->CloseContainer(aNode);
+ NS_STOP_STOPWATCH()
+ return rv;
}
NS_IMETHODIMP
@@ -2255,7 +2310,7 @@ nsresult HTMLContentSink::AddComment(const nsIParserNode& aNode) {
NS_START_STOPWATCH()
nsresult rv = NS_OK;
rv = mCurrentContext->AddComment(aNode);
- NS_STOP_STOPWATCH();
+ NS_STOP_STOPWATCH()
return rv;
}
@@ -2270,7 +2325,7 @@ nsresult HTMLContentSink::AddProcessingInstruction(const nsIParserNode& aNode) {
NS_START_STOPWATCH()
// Implementation of AddProcessingInstruction() should start here
- NS_STOP_STOPWATCH();
+ NS_STOP_STOPWATCH()
return result;
}
@@ -2286,7 +2341,7 @@ HTMLContentSink::AddDocTypeDecl(const nsIParserNode& aNode, PRInt32 aMode)
NS_START_STOPWATCH()
// Implementation of AddDocTypeDecl() should start here
- NS_STOP_STOPWATCH();
+ NS_STOP_STOPWATCH()
return rv;
}
diff --git a/mozilla/layout/html/document/src/nsHTMLContentSink.cpp b/mozilla/layout/html/document/src/nsHTMLContentSink.cpp
index 7f63278ae3a..de33f0b992e 100644
--- a/mozilla/layout/html/document/src/nsHTMLContentSink.cpp
+++ b/mozilla/layout/html/document/src/nsHTMLContentSink.cpp
@@ -1661,6 +1661,17 @@ HTMLContentSink::Init(nsIDocument* aDoc,
nsIWebShell* aContainer)
{
// NRA Dump document and stopwatch start info here
+#ifdef DEBUG_nisheeth
+ {
+ char* url;
+ nsresult rv = NS_OK;
+ rv = aURL->GetSpec(&url);
+ if (NS_SUCCEEDED(rv)) {
+ printf("Starting stopwatch for '%s'", url);
+ delete [] url;
+ }
+ }
+#endif
NS_RESET_AND_START_STOPWATCH()
NS_PRECONDITION(nsnull != aDoc, "null ptr");
@@ -1747,6 +1758,9 @@ NS_IMETHODIMP
HTMLContentSink::DidBuildModel(PRInt32 aQualityLevel)
{
// NRA Dump stopwatch stop info here
+#ifdef RAPTOR_PERF_METRICS
+ mWatch.Print();
+#endif
if (nsnull == mTitle) {
mHTMLDocument->SetTitle("");
@@ -1818,11 +1832,13 @@ HTMLContentSink::SetParser(nsIParser* aParser)
NS_IMETHODIMP
HTMLContentSink::BeginContext(PRInt32 aPosition)
{
+ NS_START_STOPWATCH()
NS_PRECONDITION(aPosition > -1, "out of bounds");
// Create new context
SinkContext* sc = new SinkContext(this);
if (nsnull == sc) {
+ NS_STOP_STOPWATCH()
return NS_ERROR_OUT_OF_MEMORY;
}
@@ -1835,12 +1851,14 @@ HTMLContentSink::BeginContext(PRInt32 aPosition)
mContextStack.AppendElement(mCurrentContext);
mCurrentContext = sc;
+ NS_STOP_STOPWATCH()
return NS_OK;
}
NS_IMETHODIMP
HTMLContentSink::EndContext(PRInt32 aPosition)
{
+ NS_START_STOPWATCH()
NS_PRECONDITION(mCurrentContext != nsnull && aPosition > -1, "non-existing context");
PRInt32 n = mContextStack.Count() - 1;
@@ -1865,7 +1883,7 @@ HTMLContentSink::EndContext(PRInt32 aPosition)
mCurrentContext = sc;
mContextStack.RemoveElementAt(n);
-
+ NS_STOP_STOPWATCH()
return NS_OK;
}
@@ -1873,6 +1891,7 @@ HTMLContentSink::EndContext(PRInt32 aPosition)
NS_IMETHODIMP
HTMLContentSink::SetTitle(const nsString& aValue)
{
+ NS_START_STOPWATCH()
NS_ASSERTION(mCurrentContext == mHeadContext, "SetTitle not in head");
if (nsnull == mTitle) {
@@ -1882,6 +1901,7 @@ HTMLContentSink::SetTitle(const nsString& aValue)
// If the title was already set then don't try to overwrite it
// when a new title is encountered - For backwards compatiblity
//*mTitle = aValue;
+ NS_STOP_STOPWATCH()
return NS_OK;
}
ReduceEntities(*mTitle);
@@ -1909,20 +1929,25 @@ HTMLContentSink::SetTitle(const nsString& aValue)
NS_RELEASE(it);
}
NS_RELEASE(atom);
+ NS_STOP_STOPWATCH()
return NS_OK;
}
NS_IMETHODIMP
HTMLContentSink::OpenHTML(const nsIParserNode& aNode)
{
+ NS_START_STOPWATCH()
SINK_TRACE_NODE(SINK_TRACE_CALLS,
"HTMLContentSink::OpenHTML", aNode);
+
+ NS_STOP_STOPWATCH()
return NS_OK;
}
NS_IMETHODIMP
HTMLContentSink::CloseHTML(const nsIParserNode& aNode)
{
+ NS_START_STOPWATCH()
SINK_TRACE_NODE(SINK_TRACE_CALLS,
"HTMLContentSink::CloseHTML", aNode);
if (nsnull != mHeadContext) {
@@ -1930,23 +1955,27 @@ HTMLContentSink::CloseHTML(const nsIParserNode& aNode)
delete mHeadContext;
mHeadContext = nsnull;
}
+ NS_STOP_STOPWATCH()
return NS_OK;
}
NS_IMETHODIMP
HTMLContentSink::OpenHead(const nsIParserNode& aNode)
{
+ NS_START_STOPWATCH()
SINK_TRACE_NODE(SINK_TRACE_CALLS,
"HTMLContentSink::OpenHead", aNode);
nsresult rv = NS_OK;
if (nsnull == mHeadContext) {
mHeadContext = new SinkContext(this);
if (nsnull == mHeadContext) {
+ NS_STOP_STOPWATCH()
return NS_ERROR_OUT_OF_MEMORY;
}
mHeadContext->SetPreAppend(PR_TRUE);
rv = mHeadContext->Begin(eHTMLTag_head, mHead);
if (NS_OK != rv) {
+ NS_STOP_STOPWATCH()
return rv;
}
}
@@ -1959,23 +1988,27 @@ HTMLContentSink::OpenHead(const nsIParserNode& aNode)
NS_IF_RELEASE(sco);
}
+ NS_STOP_STOPWATCH()
return rv;
}
NS_IMETHODIMP
HTMLContentSink::CloseHead(const nsIParserNode& aNode)
{
+ NS_START_STOPWATCH()
SINK_TRACE_NODE(SINK_TRACE_CALLS,
"HTMLContentSink::CloseHead", aNode);
PRInt32 n = mContextStack.Count() - 1;
mCurrentContext = (SinkContext*) mContextStack.ElementAt(n);
mContextStack.RemoveElementAt(n);
+ NS_STOP_STOPWATCH()
return NS_OK;
}
NS_IMETHODIMP
HTMLContentSink::OpenBody(const nsIParserNode& aNode)
{
+ NS_START_STOPWATCH()
//NS_PRECONDITION(nsnull == mBody, "parser called OpenBody twice");
SINK_TRACE_NODE(SINK_TRACE_CALLS,
@@ -1984,7 +2017,8 @@ HTMLContentSink::OpenBody(const nsIParserNode& aNode)
if(mBody != nsnull){
nsIScriptContextOwner* sco = mDocument->GetScriptContextOwner();
AddAttributes(aNode,mBody,sco,PR_TRUE);
- NS_IF_RELEASE(sco);
+ NS_IF_RELEASE(sco);
+ NS_STOP_STOPWATCH()
return NS_OK;
}
@@ -1994,12 +2028,14 @@ HTMLContentSink::OpenBody(const nsIParserNode& aNode)
nsresult rv = mCurrentContext->OpenContainer(aNode);
mCurrentContext->SetPreAppend(PR_FALSE);
if (NS_OK != rv) {
+ NS_STOP_STOPWATCH()
return rv;
}
mBody = mCurrentContext->mStack[mCurrentContext->mStackPos - 1].mContent;
mBodyChildCount = 0;
NS_ADDREF(mBody);
+ NS_STOP_STOPWATCH()
StartLayout();
return NS_OK;
}
@@ -2007,12 +2043,14 @@ HTMLContentSink::OpenBody(const nsIParserNode& aNode)
NS_IMETHODIMP
HTMLContentSink::CloseBody(const nsIParserNode& aNode)
{
+ NS_START_STOPWATCH()
SINK_TRACE_NODE(SINK_TRACE_CALLS,
"HTMLContentSink::CloseBody", aNode);
PRBool didFlush;
nsresult rv = mCurrentContext->FlushText(&didFlush);
if (NS_OK != rv) {
+ NS_STOP_STOPWATCH()
return rv;
}
mCurrentContext->CloseContainer(aNode);
@@ -2022,12 +2060,14 @@ HTMLContentSink::CloseBody(const nsIParserNode& aNode)
NotifyBody();
}
+ NS_STOP_STOPWATCH()
return NS_OK;
}
NS_IMETHODIMP
HTMLContentSink::OpenForm(const nsIParserNode& aNode)
{
+ NS_START_STOPWATCH()
nsresult result = NS_OK;
nsIHTMLContent* content = nsnull;
@@ -2080,6 +2120,7 @@ HTMLContentSink::OpenForm(const nsIParserNode& aNode)
mHTMLDocument->AddForm(mCurrentForm);
}
+ NS_STOP_STOPWATCH()
return result;
}
@@ -2088,6 +2129,7 @@ HTMLContentSink::OpenForm(const nsIParserNode& aNode)
NS_IMETHODIMP
HTMLContentSink::CloseForm(const nsIParserNode& aNode)
{
+ NS_START_STOPWATCH()
nsresult result = NS_OK;
mCurrentContext->FlushText();
@@ -2112,12 +2154,14 @@ HTMLContentSink::CloseForm(const nsIParserNode& aNode)
NS_RELEASE(mCurrentForm);
}
+ NS_STOP_STOPWATCH()
return result;
}
NS_IMETHODIMP
HTMLContentSink::OpenFrameset(const nsIParserNode& aNode)
{
+ NS_START_STOPWATCH()
SINK_TRACE_NODE(SINK_TRACE_CALLS,
"HTMLContentSink::OpenFrameset", aNode);
@@ -2127,12 +2171,14 @@ HTMLContentSink::OpenFrameset(const nsIParserNode& aNode)
NS_ADDREF(mFrameset);
}
mInMonolithicContainer++;
+ NS_STOP_STOPWATCH()
return rv;
}
NS_IMETHODIMP
HTMLContentSink::CloseFrameset(const nsIParserNode& aNode)
{
+ NS_START_STOPWATCH()
SINK_TRACE_NODE(SINK_TRACE_CALLS,
"HTMLContentSink::CloseFrameset", aNode);
@@ -2140,6 +2186,7 @@ HTMLContentSink::CloseFrameset(const nsIParserNode& aNode)
nsIHTMLContent* fs = sc->mStack[sc->mStackPos-1].mContent;
PRBool done = fs == mFrameset;
nsresult rv = sc->CloseContainer(aNode);
+ NS_STOP_STOPWATCH()
if (done) {
StartLayout();
}
@@ -2149,24 +2196,32 @@ HTMLContentSink::CloseFrameset(const nsIParserNode& aNode)
NS_IMETHODIMP
HTMLContentSink::OpenMap(const nsIParserNode& aNode)
{
+ NS_START_STOPWATCH()
+ nsresult rv = NS_OK;
SINK_TRACE_NODE(SINK_TRACE_CALLS,
"HTMLContentSink::OpenMap", aNode);
// We used to treat MAP elements specially (i.e. they were
// only parent elements for AREAs), but we don't anymore.
// HTML 4.0 says that MAP elements can have block content
// as children.
- return mCurrentContext->OpenContainer(aNode);
+ rv = mCurrentContext->OpenContainer(aNode);
+ NS_STOP_STOPWATCH()
+ return rv;
}
NS_IMETHODIMP
HTMLContentSink::CloseMap(const nsIParserNode& aNode)
{
+ NS_START_STOPWATCH()
+ nsresult rv = NS_OK;
SINK_TRACE_NODE(SINK_TRACE_CALLS,
"HTMLContentSink::CloseMap", aNode);
NS_IF_RELEASE(mCurrentMap);
NS_IF_RELEASE(mCurrentDOMMap);
- return mCurrentContext->CloseContainer(aNode);
+ rv = mCurrentContext->CloseContainer(aNode);
+ NS_STOP_STOPWATCH()
+ return rv;
}
NS_IMETHODIMP
@@ -2255,7 +2310,7 @@ nsresult HTMLContentSink::AddComment(const nsIParserNode& aNode) {
NS_START_STOPWATCH()
nsresult rv = NS_OK;
rv = mCurrentContext->AddComment(aNode);
- NS_STOP_STOPWATCH();
+ NS_STOP_STOPWATCH()
return rv;
}
@@ -2270,7 +2325,7 @@ nsresult HTMLContentSink::AddProcessingInstruction(const nsIParserNode& aNode) {
NS_START_STOPWATCH()
// Implementation of AddProcessingInstruction() should start here
- NS_STOP_STOPWATCH();
+ NS_STOP_STOPWATCH()
return result;
}
@@ -2286,7 +2341,7 @@ HTMLContentSink::AddDocTypeDecl(const nsIParserNode& aNode, PRInt32 aMode)
NS_START_STOPWATCH()
// Implementation of AddDocTypeDecl() should start here
- NS_STOP_STOPWATCH();
+ NS_STOP_STOPWATCH()
return rv;
}