Loading htmlparser/src/CNavDTD.cpp +152 −17 Original line number Diff line number Diff line Loading @@ -78,6 +78,20 @@ static eHTMLTags gWhitespaceTags[]={ #include "nsElementTable.h" #ifdef RAPTOR_PERF_METRICS # define START_TIMER() \ if(mParser) mParser->mParseTime.Start(PR_FALSE); # define STOP_TIMER() \ if(mParser) mParser->mParseTime.Stop(); #else # define STOP_TIMER() # define START_TIMER() #endif /*************************************************************** This the ITagHandler deque deallocator, needed by the CTagHandlerRegister Loading Loading @@ -487,8 +501,6 @@ eAutoDetectResult CNavDTD::CanParse(nsString& aContentType, nsString& aCommand, } PRTime gStartTime; /** * * @update gess5/18/98 Loading @@ -506,17 +518,15 @@ nsresult CNavDTD::WillBuildModel(nsString& aFilename,PRBool aNotifySink,nsString mHasOpenScript=PR_FALSE; if((aNotifySink) && (aSink)) { STOP_TIMER(); if(aSink && (!mSink)) { result=aSink->QueryInterface(kIHTMLContentSinkIID, (void **)&mSink); } result = aSink->WillBuildModel(); START_TIMER(); #ifdef RGESS_DEBUG gStartTime = PR_Now(); printf("Begin parsing...\n"); #endif result = aSink->WillBuildModel(); CStartToken theToken(eHTMLTag_html); HandleStartToken(&theToken); Loading Loading @@ -603,15 +613,6 @@ nsresult CNavDTD::DidBuildModel(nsresult anErrorCode,PRBool aNotifySink,nsIParse } } #ifdef RGESS_DEBUG PRTime theEnd= PR_Now(); PRTime creates, ustoms; LL_I2L(ustoms, 1000); LL_SUB(creates, theEnd, gStartTime); LL_DIV(creates, creates, ustoms); printf("End parse elapsed: %lldms\n",creates); #endif //let's only grab this state once! if(!gShowCRC) { gShowCRC=1; //this only indicates we'll not initialize again. Loading @@ -623,6 +624,8 @@ nsresult CNavDTD::DidBuildModel(nsresult anErrorCode,PRBool aNotifySink,nsIParse } } STOP_TIMER(); if(2==gShowCRC) { if(mComputedCRC32!=mExpectedCRC32) { if(mExpectedCRC32!=0) { Loading @@ -641,6 +644,9 @@ nsresult CNavDTD::DidBuildModel(nsresult anErrorCode,PRBool aNotifySink,nsIParse if(mDTDDebug) { mDTDDebug->DumpVectorRecord(); } START_TIMER(); } } } Loading Loading @@ -821,10 +827,16 @@ nsresult CNavDTD::DidHandleStartTag(nsCParserNode& aNode,eHTMLTags aChildTag){ case eHTMLTag_xmp: //grab the skipped content and dump it out as text... { STOP_TIMER(); const nsString& theText=aNode.GetSkippedContent(); if(0<theText.Length()) { CViewSourceHTML::WriteText(theText,*mSink,PR_TRUE,PR_FALSE); } START_TIMER(); } break; default: Loading Loading @@ -1285,8 +1297,14 @@ nsresult CNavDTD::HandleStartToken(CToken* aToken) { switch(theChildTag) { case eHTMLTag_area: STOP_TIMER(); if (mHasOpenMap && mSink) result=mSink->AddLeaf(*theNode); START_TIMER(); break; case eHTMLTag_image: Loading Loading @@ -1634,7 +1652,12 @@ nsresult CNavDTD::HandleCommentToken(CToken* aToken) { WriteTokenToLog(aToken); #endif STOP_TIMER(); nsresult result=(mSink) ? mSink->AddComment(aNode) : NS_OK; START_TIMER(); return result; } Loading Loading @@ -1704,7 +1727,12 @@ nsresult CNavDTD::HandleProcessingInstructionToken(CToken* aToken){ WriteTokenToLog(aToken); #endif STOP_TIMER(); nsresult result=(mSink) ? mSink->AddProcessingInstruction(aNode) : NS_OK; START_TIMER(); return result; } Loading @@ -1731,7 +1759,13 @@ nsresult CNavDTD::HandleDocTypeDeclToken(CToken* aToken){ mLineNumber += (docTypeStr).CountChar(kNewLine); docTypeStr.Trim("<!>"); nsCParserNode theNode((CHTMLToken*)aToken,mLineNumber,mTokenizer->GetTokenRecycler()); STOP_TIMER(); result = (mSink)? mSink->AddDocTypeDecl(theNode, pc->mParseMode):NS_OK; START_TIMER(); } return result; } Loading Loading @@ -2235,7 +2269,12 @@ nsresult CNavDTD::CloseTransientStyles(eHTMLTags aChildTag){ nsresult CNavDTD::OpenHTML(const nsIParserNode& aNode){ NS_PRECONDITION(mBodyContext->GetCount() >= 0, kInvalidTagStackPos); STOP_TIMER(); nsresult result=(mSink) ? mSink->OpenHTML(aNode) : NS_OK; START_TIMER(); mBodyContext->Push((eHTMLTags)aNode.GetNodeType()); return result; } Loading @@ -2251,7 +2290,13 @@ nsresult CNavDTD::OpenHTML(const nsIParserNode& aNode){ */ nsresult CNavDTD::CloseHTML(const nsIParserNode& aNode){ NS_PRECONDITION(mBodyContext->GetCount() > 0, kInvalidTagStackPos); STOP_TIMER(); nsresult result=(mSink) ? mSink->CloseHTML(aNode) : NS_OK; START_TIMER(); mBodyContext->Pop(); return result; } Loading @@ -2268,9 +2313,15 @@ nsresult CNavDTD::CloseHTML(const nsIParserNode& aNode){ nsresult CNavDTD::OpenHead(const nsIParserNode& aNode){ //mBodyContext->Push(eHTMLTag_head); nsresult result=NS_OK; STOP_TIMER(); if(!mHasOpenHead++) { result=(mSink) ? mSink->OpenHead(aNode) : NS_OK; } START_TIMER(); return result; } Loading @@ -2286,7 +2337,13 @@ nsresult CNavDTD::CloseHead(const nsIParserNode& aNode){ nsresult result=NS_OK; if(mHasOpenHead) { if(0==--mHasOpenHead){ STOP_TIMER(); result=(mSink) ? mSink->CloseHead(aNode) : NS_OK; START_TIMER(); } } //mBodyContext->Pop(); Loading Loading @@ -2324,7 +2381,13 @@ nsresult CNavDTD::OpenBody(const nsIParserNode& aNode){ } if(NS_OK==result) { STOP_TIMER(); result=(mSink) ? mSink->OpenBody(aNode) : NS_OK; START_TIMER(); if(!theBodyIsOpen) { mBodyContext->Push((eHTMLTags)aNode.GetNodeType()); mTokenizer->PrependTokens(mMisplacedContent); Loading @@ -2344,7 +2407,13 @@ nsresult CNavDTD::OpenBody(const nsIParserNode& aNode){ */ nsresult CNavDTD::CloseBody(const nsIParserNode& aNode){ NS_PRECONDITION(mBodyContext->GetCount() >= 0, kInvalidTagStackPos); STOP_TIMER(); nsresult result=(mSink) ? mSink->CloseBody(aNode) : NS_OK; START_TIMER(); mBodyContext->Pop(); return result; } Loading @@ -2360,7 +2429,13 @@ nsresult CNavDTD::CloseBody(const nsIParserNode& aNode){ nsresult CNavDTD::OpenForm(const nsIParserNode& aNode){ if(mHasOpenForm) CloseForm(aNode); STOP_TIMER(); nsresult result=(mSink) ? mSink->OpenForm(aNode) : NS_OK; START_TIMER(); if(NS_OK==result) mHasOpenForm=PR_TRUE; return result; Loading @@ -2379,7 +2454,13 @@ nsresult CNavDTD::CloseForm(const nsIParserNode& aNode){ nsresult result=NS_OK; if(mHasOpenForm) { mHasOpenForm=PR_FALSE; STOP_TIMER(); result=(mSink) ? mSink->CloseForm(aNode) : NS_OK; START_TIMER(); } return result; } Loading @@ -2395,7 +2476,13 @@ nsresult CNavDTD::CloseForm(const nsIParserNode& aNode){ nsresult CNavDTD::OpenMap(const nsIParserNode& aNode){ if(mHasOpenMap) CloseMap(aNode); STOP_TIMER(); nsresult result=(mSink) ? mSink->OpenMap(aNode) : NS_OK; START_TIMER(); if(NS_OK==result) { mBodyContext->Push((eHTMLTags)aNode.GetNodeType()); mHasOpenMap=PR_TRUE; Loading @@ -2416,7 +2503,13 @@ nsresult CNavDTD::CloseMap(const nsIParserNode& aNode){ nsresult result=NS_OK; if(mHasOpenMap) { mHasOpenMap=PR_FALSE; STOP_TIMER(); result=(mSink) ? mSink->CloseMap(aNode) : NS_OK; START_TIMER(); mBodyContext->Pop(); } return result; Loading @@ -2434,7 +2527,13 @@ nsresult CNavDTD::OpenFrameset(const nsIParserNode& aNode){ NS_PRECONDITION(mBodyContext->GetCount() >= 0, kInvalidTagStackPos); mHadFrameset=PR_TRUE; STOP_TIMER(); nsresult result=(mSink) ? mSink->OpenFrameset(aNode) : NS_OK; START_TIMER(); mBodyContext->Push((eHTMLTags)aNode.GetNodeType()); mHadFrameset=PR_TRUE; return result; Loading @@ -2450,7 +2549,13 @@ nsresult CNavDTD::OpenFrameset(const nsIParserNode& aNode){ */ nsresult CNavDTD::CloseFrameset(const nsIParserNode& aNode){ NS_PRECONDITION(mBodyContext->GetCount() > 0, kInvalidTagStackPos); STOP_TIMER(); nsresult result=(mSink) ? mSink->CloseFrameset(aNode) : NS_OK; START_TIMER(); mBodyContext->Pop(); return result; } Loading Loading @@ -2530,7 +2635,13 @@ CNavDTD::OpenContainer(const nsIParserNode& aNode,PRBool aClosedByStartTag){ break; default: STOP_TIMER(); result=(mSink) ? mSink->OpenContainer(aNode) : NS_OK; START_TIMER(); mBodyContext->Push((eHTMLTags)aNode.GetNodeType()); break; } Loading Loading @@ -2594,7 +2705,13 @@ CNavDTD::CloseContainer(const nsIParserNode& aNode,eHTMLTags aTag,PRBool aClosed case eHTMLTag_title: default: STOP_TIMER(); result=(mSink) ? mSink->CloseContainer(aNode) : NS_OK; START_TIMER(); mBodyContext->Pop(); break; } Loading Loading @@ -2716,7 +2833,13 @@ nsresult CNavDTD::AddLeaf(const nsIParserNode& aNode){ if(mSink){ eHTMLTags theTag=(eHTMLTags)aNode.GetNodeType(); OpenTransientStyles(theTag); STOP_TIMER(); result=mSink->AddLeaf(aNode); START_TIMER(); } return result; } Loading Loading @@ -2947,7 +3070,13 @@ nsITokenizer* CNavDTD::GetTokenizer(void) { * @return */ nsresult CNavDTD::WillResumeParse(void){ STOP_TIMER(); nsresult result=(mSink) ? mSink->WillResume() : NS_OK; START_TIMER(); return result; } Loading @@ -2958,7 +3087,13 @@ nsresult CNavDTD::WillResumeParse(void){ * @return error code */ nsresult CNavDTD::WillInterruptParse(void){ STOP_TIMER(); nsresult result=(mSink) ? mSink->WillInterrupt() : NS_OK; START_TIMER(); return result; } Loading htmlparser/src/nsParser.cpp +25 −4 Original line number Diff line number Diff line Loading @@ -194,6 +194,11 @@ nsParser::nsParser(nsITokenObserver* anObserver) : mCommand(""), mUnusedInput("" mDTDVerification=PR_FALSE; mCharsetSource=kCharsetUninitialized; mInternalState=NS_OK; #ifdef RAPTOR_PERF_METRICS mParseTime.Reset(); #endif } Loading Loading @@ -635,6 +640,9 @@ nsresult nsParser::EnableParser(PRBool aState){ if(result!=NS_OK) result=mInternalState; } else { NS_STOP_STOPWATCH(mParseTime); } NS_STOP_STOPWATCH(mTotalTime) Loading @@ -649,9 +657,7 @@ nsresult nsParser::EnableParser(PRBool aState){ * @update vidur 4/12/99 * @return current state */ PRBool nsParser::IsParserEnabled() { PRBool nsParser::IsParserEnabled() { return mParserContext->mParserEnabled; } Loading @@ -669,6 +675,7 @@ nsParser::IsParserEnabled() */ nsresult nsParser::Parse(nsIURI* aURL,nsIStreamObserver* aListener,PRBool aVerifyEnabled, void* aKey,eParseMode aMode) { NS_START_STOPWATCH(mTotalTime) NS_PRECONDITION(0!=aURL,kNullURL); nsresult result=kBadURL; Loading Loading @@ -713,6 +720,7 @@ nsresult nsParser::Parse(nsIURI* aURL,nsIStreamObserver* aListener,PRBool aVerif */ nsresult nsParser::Parse(nsIInputStream& aStream,PRBool aVerifyEnabled, void* aKey,eParseMode aMode){ NS_START_STOPWATCH(mTotalTime) mDTDVerification=aVerifyEnabled; nsresult result=NS_ERROR_OUT_OF_MEMORY; Loading Loading @@ -902,6 +910,9 @@ nsresult nsParser::ParseFragment(const nsString& aSourceBuffer,void* aKey,nsITag nsresult nsParser::ResumeParse(nsIDTD* aDefaultDTD, PRBool aIsFinalChunk) { nsresult result=NS_OK; if(mParserContext->mParserEnabled && mInternalState!=NS_ERROR_HTMLPARSER_STOPPARSING) { NS_START_STOPWATCH(mParseTime) result=WillBuildModel(mParserContext->mScanner->GetFilename(),aDefaultDTD); if(mParserContext->mDTD) { mParserContext->mDTD->WillResumeParse(); Loading @@ -915,10 +926,18 @@ nsresult nsParser::ResumeParse(nsIDTD* aDefaultDTD, PRBool aIsFinalChunk) { ((eOnStop==mParserContext->mStreamListenerState) && (NS_OK==result))){ DidBuildModel(mStreamStatus); NS_STOP_STOPWATCH(mTotalTime); NS_STOP_STOPWATCH(mParseTime); #ifdef RAPTOR_PERF_METRICS printf("Total Time: "); mTotalTime.Print(); printf("\n"); printf("Parse Time: "); mParseTime.Print(); printf("\n"); #endif return mInternalState; } Loading @@ -939,6 +958,8 @@ nsresult nsParser::ResumeParse(nsIDTD* aDefaultDTD, PRBool aIsFinalChunk) { } }//if NS_STOP_STOPWATCH(mParseTime); return result; } Loading htmlparser/src/nsParser.h +4 −0 Original line number Diff line number Diff line Loading @@ -381,9 +381,13 @@ protected: nsCharsetSource mCharsetSource; nsresult mInternalState; CObserverService mObserverService; #ifdef RAPTOR_PERF_METRICS public: Stopwatch mTotalTime; Stopwatch mParseTime; #endif }; Loading parser/htmlparser/src/CNavDTD.cpp +152 −17 Original line number Diff line number Diff line Loading @@ -78,6 +78,20 @@ static eHTMLTags gWhitespaceTags[]={ #include "nsElementTable.h" #ifdef RAPTOR_PERF_METRICS # define START_TIMER() \ if(mParser) mParser->mParseTime.Start(PR_FALSE); # define STOP_TIMER() \ if(mParser) mParser->mParseTime.Stop(); #else # define STOP_TIMER() # define START_TIMER() #endif /*************************************************************** This the ITagHandler deque deallocator, needed by the CTagHandlerRegister Loading Loading @@ -487,8 +501,6 @@ eAutoDetectResult CNavDTD::CanParse(nsString& aContentType, nsString& aCommand, } PRTime gStartTime; /** * * @update gess5/18/98 Loading @@ -506,17 +518,15 @@ nsresult CNavDTD::WillBuildModel(nsString& aFilename,PRBool aNotifySink,nsString mHasOpenScript=PR_FALSE; if((aNotifySink) && (aSink)) { STOP_TIMER(); if(aSink && (!mSink)) { result=aSink->QueryInterface(kIHTMLContentSinkIID, (void **)&mSink); } result = aSink->WillBuildModel(); START_TIMER(); #ifdef RGESS_DEBUG gStartTime = PR_Now(); printf("Begin parsing...\n"); #endif result = aSink->WillBuildModel(); CStartToken theToken(eHTMLTag_html); HandleStartToken(&theToken); Loading Loading @@ -603,15 +613,6 @@ nsresult CNavDTD::DidBuildModel(nsresult anErrorCode,PRBool aNotifySink,nsIParse } } #ifdef RGESS_DEBUG PRTime theEnd= PR_Now(); PRTime creates, ustoms; LL_I2L(ustoms, 1000); LL_SUB(creates, theEnd, gStartTime); LL_DIV(creates, creates, ustoms); printf("End parse elapsed: %lldms\n",creates); #endif //let's only grab this state once! if(!gShowCRC) { gShowCRC=1; //this only indicates we'll not initialize again. Loading @@ -623,6 +624,8 @@ nsresult CNavDTD::DidBuildModel(nsresult anErrorCode,PRBool aNotifySink,nsIParse } } STOP_TIMER(); if(2==gShowCRC) { if(mComputedCRC32!=mExpectedCRC32) { if(mExpectedCRC32!=0) { Loading @@ -641,6 +644,9 @@ nsresult CNavDTD::DidBuildModel(nsresult anErrorCode,PRBool aNotifySink,nsIParse if(mDTDDebug) { mDTDDebug->DumpVectorRecord(); } START_TIMER(); } } } Loading Loading @@ -821,10 +827,16 @@ nsresult CNavDTD::DidHandleStartTag(nsCParserNode& aNode,eHTMLTags aChildTag){ case eHTMLTag_xmp: //grab the skipped content and dump it out as text... { STOP_TIMER(); const nsString& theText=aNode.GetSkippedContent(); if(0<theText.Length()) { CViewSourceHTML::WriteText(theText,*mSink,PR_TRUE,PR_FALSE); } START_TIMER(); } break; default: Loading Loading @@ -1285,8 +1297,14 @@ nsresult CNavDTD::HandleStartToken(CToken* aToken) { switch(theChildTag) { case eHTMLTag_area: STOP_TIMER(); if (mHasOpenMap && mSink) result=mSink->AddLeaf(*theNode); START_TIMER(); break; case eHTMLTag_image: Loading Loading @@ -1634,7 +1652,12 @@ nsresult CNavDTD::HandleCommentToken(CToken* aToken) { WriteTokenToLog(aToken); #endif STOP_TIMER(); nsresult result=(mSink) ? mSink->AddComment(aNode) : NS_OK; START_TIMER(); return result; } Loading Loading @@ -1704,7 +1727,12 @@ nsresult CNavDTD::HandleProcessingInstructionToken(CToken* aToken){ WriteTokenToLog(aToken); #endif STOP_TIMER(); nsresult result=(mSink) ? mSink->AddProcessingInstruction(aNode) : NS_OK; START_TIMER(); return result; } Loading @@ -1731,7 +1759,13 @@ nsresult CNavDTD::HandleDocTypeDeclToken(CToken* aToken){ mLineNumber += (docTypeStr).CountChar(kNewLine); docTypeStr.Trim("<!>"); nsCParserNode theNode((CHTMLToken*)aToken,mLineNumber,mTokenizer->GetTokenRecycler()); STOP_TIMER(); result = (mSink)? mSink->AddDocTypeDecl(theNode, pc->mParseMode):NS_OK; START_TIMER(); } return result; } Loading Loading @@ -2235,7 +2269,12 @@ nsresult CNavDTD::CloseTransientStyles(eHTMLTags aChildTag){ nsresult CNavDTD::OpenHTML(const nsIParserNode& aNode){ NS_PRECONDITION(mBodyContext->GetCount() >= 0, kInvalidTagStackPos); STOP_TIMER(); nsresult result=(mSink) ? mSink->OpenHTML(aNode) : NS_OK; START_TIMER(); mBodyContext->Push((eHTMLTags)aNode.GetNodeType()); return result; } Loading @@ -2251,7 +2290,13 @@ nsresult CNavDTD::OpenHTML(const nsIParserNode& aNode){ */ nsresult CNavDTD::CloseHTML(const nsIParserNode& aNode){ NS_PRECONDITION(mBodyContext->GetCount() > 0, kInvalidTagStackPos); STOP_TIMER(); nsresult result=(mSink) ? mSink->CloseHTML(aNode) : NS_OK; START_TIMER(); mBodyContext->Pop(); return result; } Loading @@ -2268,9 +2313,15 @@ nsresult CNavDTD::CloseHTML(const nsIParserNode& aNode){ nsresult CNavDTD::OpenHead(const nsIParserNode& aNode){ //mBodyContext->Push(eHTMLTag_head); nsresult result=NS_OK; STOP_TIMER(); if(!mHasOpenHead++) { result=(mSink) ? mSink->OpenHead(aNode) : NS_OK; } START_TIMER(); return result; } Loading @@ -2286,7 +2337,13 @@ nsresult CNavDTD::CloseHead(const nsIParserNode& aNode){ nsresult result=NS_OK; if(mHasOpenHead) { if(0==--mHasOpenHead){ STOP_TIMER(); result=(mSink) ? mSink->CloseHead(aNode) : NS_OK; START_TIMER(); } } //mBodyContext->Pop(); Loading Loading @@ -2324,7 +2381,13 @@ nsresult CNavDTD::OpenBody(const nsIParserNode& aNode){ } if(NS_OK==result) { STOP_TIMER(); result=(mSink) ? mSink->OpenBody(aNode) : NS_OK; START_TIMER(); if(!theBodyIsOpen) { mBodyContext->Push((eHTMLTags)aNode.GetNodeType()); mTokenizer->PrependTokens(mMisplacedContent); Loading @@ -2344,7 +2407,13 @@ nsresult CNavDTD::OpenBody(const nsIParserNode& aNode){ */ nsresult CNavDTD::CloseBody(const nsIParserNode& aNode){ NS_PRECONDITION(mBodyContext->GetCount() >= 0, kInvalidTagStackPos); STOP_TIMER(); nsresult result=(mSink) ? mSink->CloseBody(aNode) : NS_OK; START_TIMER(); mBodyContext->Pop(); return result; } Loading @@ -2360,7 +2429,13 @@ nsresult CNavDTD::CloseBody(const nsIParserNode& aNode){ nsresult CNavDTD::OpenForm(const nsIParserNode& aNode){ if(mHasOpenForm) CloseForm(aNode); STOP_TIMER(); nsresult result=(mSink) ? mSink->OpenForm(aNode) : NS_OK; START_TIMER(); if(NS_OK==result) mHasOpenForm=PR_TRUE; return result; Loading @@ -2379,7 +2454,13 @@ nsresult CNavDTD::CloseForm(const nsIParserNode& aNode){ nsresult result=NS_OK; if(mHasOpenForm) { mHasOpenForm=PR_FALSE; STOP_TIMER(); result=(mSink) ? mSink->CloseForm(aNode) : NS_OK; START_TIMER(); } return result; } Loading @@ -2395,7 +2476,13 @@ nsresult CNavDTD::CloseForm(const nsIParserNode& aNode){ nsresult CNavDTD::OpenMap(const nsIParserNode& aNode){ if(mHasOpenMap) CloseMap(aNode); STOP_TIMER(); nsresult result=(mSink) ? mSink->OpenMap(aNode) : NS_OK; START_TIMER(); if(NS_OK==result) { mBodyContext->Push((eHTMLTags)aNode.GetNodeType()); mHasOpenMap=PR_TRUE; Loading @@ -2416,7 +2503,13 @@ nsresult CNavDTD::CloseMap(const nsIParserNode& aNode){ nsresult result=NS_OK; if(mHasOpenMap) { mHasOpenMap=PR_FALSE; STOP_TIMER(); result=(mSink) ? mSink->CloseMap(aNode) : NS_OK; START_TIMER(); mBodyContext->Pop(); } return result; Loading @@ -2434,7 +2527,13 @@ nsresult CNavDTD::OpenFrameset(const nsIParserNode& aNode){ NS_PRECONDITION(mBodyContext->GetCount() >= 0, kInvalidTagStackPos); mHadFrameset=PR_TRUE; STOP_TIMER(); nsresult result=(mSink) ? mSink->OpenFrameset(aNode) : NS_OK; START_TIMER(); mBodyContext->Push((eHTMLTags)aNode.GetNodeType()); mHadFrameset=PR_TRUE; return result; Loading @@ -2450,7 +2549,13 @@ nsresult CNavDTD::OpenFrameset(const nsIParserNode& aNode){ */ nsresult CNavDTD::CloseFrameset(const nsIParserNode& aNode){ NS_PRECONDITION(mBodyContext->GetCount() > 0, kInvalidTagStackPos); STOP_TIMER(); nsresult result=(mSink) ? mSink->CloseFrameset(aNode) : NS_OK; START_TIMER(); mBodyContext->Pop(); return result; } Loading Loading @@ -2530,7 +2635,13 @@ CNavDTD::OpenContainer(const nsIParserNode& aNode,PRBool aClosedByStartTag){ break; default: STOP_TIMER(); result=(mSink) ? mSink->OpenContainer(aNode) : NS_OK; START_TIMER(); mBodyContext->Push((eHTMLTags)aNode.GetNodeType()); break; } Loading Loading @@ -2594,7 +2705,13 @@ CNavDTD::CloseContainer(const nsIParserNode& aNode,eHTMLTags aTag,PRBool aClosed case eHTMLTag_title: default: STOP_TIMER(); result=(mSink) ? mSink->CloseContainer(aNode) : NS_OK; START_TIMER(); mBodyContext->Pop(); break; } Loading Loading @@ -2716,7 +2833,13 @@ nsresult CNavDTD::AddLeaf(const nsIParserNode& aNode){ if(mSink){ eHTMLTags theTag=(eHTMLTags)aNode.GetNodeType(); OpenTransientStyles(theTag); STOP_TIMER(); result=mSink->AddLeaf(aNode); START_TIMER(); } return result; } Loading Loading @@ -2947,7 +3070,13 @@ nsITokenizer* CNavDTD::GetTokenizer(void) { * @return */ nsresult CNavDTD::WillResumeParse(void){ STOP_TIMER(); nsresult result=(mSink) ? mSink->WillResume() : NS_OK; START_TIMER(); return result; } Loading @@ -2958,7 +3087,13 @@ nsresult CNavDTD::WillResumeParse(void){ * @return error code */ nsresult CNavDTD::WillInterruptParse(void){ STOP_TIMER(); nsresult result=(mSink) ? mSink->WillInterrupt() : NS_OK; START_TIMER(); return result; } Loading parser/htmlparser/src/nsParser.cpp +25 −4 Original line number Diff line number Diff line Loading @@ -194,6 +194,11 @@ nsParser::nsParser(nsITokenObserver* anObserver) : mCommand(""), mUnusedInput("" mDTDVerification=PR_FALSE; mCharsetSource=kCharsetUninitialized; mInternalState=NS_OK; #ifdef RAPTOR_PERF_METRICS mParseTime.Reset(); #endif } Loading Loading @@ -635,6 +640,9 @@ nsresult nsParser::EnableParser(PRBool aState){ if(result!=NS_OK) result=mInternalState; } else { NS_STOP_STOPWATCH(mParseTime); } NS_STOP_STOPWATCH(mTotalTime) Loading @@ -649,9 +657,7 @@ nsresult nsParser::EnableParser(PRBool aState){ * @update vidur 4/12/99 * @return current state */ PRBool nsParser::IsParserEnabled() { PRBool nsParser::IsParserEnabled() { return mParserContext->mParserEnabled; } Loading @@ -669,6 +675,7 @@ nsParser::IsParserEnabled() */ nsresult nsParser::Parse(nsIURI* aURL,nsIStreamObserver* aListener,PRBool aVerifyEnabled, void* aKey,eParseMode aMode) { NS_START_STOPWATCH(mTotalTime) NS_PRECONDITION(0!=aURL,kNullURL); nsresult result=kBadURL; Loading Loading @@ -713,6 +720,7 @@ nsresult nsParser::Parse(nsIURI* aURL,nsIStreamObserver* aListener,PRBool aVerif */ nsresult nsParser::Parse(nsIInputStream& aStream,PRBool aVerifyEnabled, void* aKey,eParseMode aMode){ NS_START_STOPWATCH(mTotalTime) mDTDVerification=aVerifyEnabled; nsresult result=NS_ERROR_OUT_OF_MEMORY; Loading Loading @@ -902,6 +910,9 @@ nsresult nsParser::ParseFragment(const nsString& aSourceBuffer,void* aKey,nsITag nsresult nsParser::ResumeParse(nsIDTD* aDefaultDTD, PRBool aIsFinalChunk) { nsresult result=NS_OK; if(mParserContext->mParserEnabled && mInternalState!=NS_ERROR_HTMLPARSER_STOPPARSING) { NS_START_STOPWATCH(mParseTime) result=WillBuildModel(mParserContext->mScanner->GetFilename(),aDefaultDTD); if(mParserContext->mDTD) { mParserContext->mDTD->WillResumeParse(); Loading @@ -915,10 +926,18 @@ nsresult nsParser::ResumeParse(nsIDTD* aDefaultDTD, PRBool aIsFinalChunk) { ((eOnStop==mParserContext->mStreamListenerState) && (NS_OK==result))){ DidBuildModel(mStreamStatus); NS_STOP_STOPWATCH(mTotalTime); NS_STOP_STOPWATCH(mParseTime); #ifdef RAPTOR_PERF_METRICS printf("Total Time: "); mTotalTime.Print(); printf("\n"); printf("Parse Time: "); mParseTime.Print(); printf("\n"); #endif return mInternalState; } Loading @@ -939,6 +958,8 @@ nsresult nsParser::ResumeParse(nsIDTD* aDefaultDTD, PRBool aIsFinalChunk) { } }//if NS_STOP_STOPWATCH(mParseTime); return result; } Loading Loading
htmlparser/src/CNavDTD.cpp +152 −17 Original line number Diff line number Diff line Loading @@ -78,6 +78,20 @@ static eHTMLTags gWhitespaceTags[]={ #include "nsElementTable.h" #ifdef RAPTOR_PERF_METRICS # define START_TIMER() \ if(mParser) mParser->mParseTime.Start(PR_FALSE); # define STOP_TIMER() \ if(mParser) mParser->mParseTime.Stop(); #else # define STOP_TIMER() # define START_TIMER() #endif /*************************************************************** This the ITagHandler deque deallocator, needed by the CTagHandlerRegister Loading Loading @@ -487,8 +501,6 @@ eAutoDetectResult CNavDTD::CanParse(nsString& aContentType, nsString& aCommand, } PRTime gStartTime; /** * * @update gess5/18/98 Loading @@ -506,17 +518,15 @@ nsresult CNavDTD::WillBuildModel(nsString& aFilename,PRBool aNotifySink,nsString mHasOpenScript=PR_FALSE; if((aNotifySink) && (aSink)) { STOP_TIMER(); if(aSink && (!mSink)) { result=aSink->QueryInterface(kIHTMLContentSinkIID, (void **)&mSink); } result = aSink->WillBuildModel(); START_TIMER(); #ifdef RGESS_DEBUG gStartTime = PR_Now(); printf("Begin parsing...\n"); #endif result = aSink->WillBuildModel(); CStartToken theToken(eHTMLTag_html); HandleStartToken(&theToken); Loading Loading @@ -603,15 +613,6 @@ nsresult CNavDTD::DidBuildModel(nsresult anErrorCode,PRBool aNotifySink,nsIParse } } #ifdef RGESS_DEBUG PRTime theEnd= PR_Now(); PRTime creates, ustoms; LL_I2L(ustoms, 1000); LL_SUB(creates, theEnd, gStartTime); LL_DIV(creates, creates, ustoms); printf("End parse elapsed: %lldms\n",creates); #endif //let's only grab this state once! if(!gShowCRC) { gShowCRC=1; //this only indicates we'll not initialize again. Loading @@ -623,6 +624,8 @@ nsresult CNavDTD::DidBuildModel(nsresult anErrorCode,PRBool aNotifySink,nsIParse } } STOP_TIMER(); if(2==gShowCRC) { if(mComputedCRC32!=mExpectedCRC32) { if(mExpectedCRC32!=0) { Loading @@ -641,6 +644,9 @@ nsresult CNavDTD::DidBuildModel(nsresult anErrorCode,PRBool aNotifySink,nsIParse if(mDTDDebug) { mDTDDebug->DumpVectorRecord(); } START_TIMER(); } } } Loading Loading @@ -821,10 +827,16 @@ nsresult CNavDTD::DidHandleStartTag(nsCParserNode& aNode,eHTMLTags aChildTag){ case eHTMLTag_xmp: //grab the skipped content and dump it out as text... { STOP_TIMER(); const nsString& theText=aNode.GetSkippedContent(); if(0<theText.Length()) { CViewSourceHTML::WriteText(theText,*mSink,PR_TRUE,PR_FALSE); } START_TIMER(); } break; default: Loading Loading @@ -1285,8 +1297,14 @@ nsresult CNavDTD::HandleStartToken(CToken* aToken) { switch(theChildTag) { case eHTMLTag_area: STOP_TIMER(); if (mHasOpenMap && mSink) result=mSink->AddLeaf(*theNode); START_TIMER(); break; case eHTMLTag_image: Loading Loading @@ -1634,7 +1652,12 @@ nsresult CNavDTD::HandleCommentToken(CToken* aToken) { WriteTokenToLog(aToken); #endif STOP_TIMER(); nsresult result=(mSink) ? mSink->AddComment(aNode) : NS_OK; START_TIMER(); return result; } Loading Loading @@ -1704,7 +1727,12 @@ nsresult CNavDTD::HandleProcessingInstructionToken(CToken* aToken){ WriteTokenToLog(aToken); #endif STOP_TIMER(); nsresult result=(mSink) ? mSink->AddProcessingInstruction(aNode) : NS_OK; START_TIMER(); return result; } Loading @@ -1731,7 +1759,13 @@ nsresult CNavDTD::HandleDocTypeDeclToken(CToken* aToken){ mLineNumber += (docTypeStr).CountChar(kNewLine); docTypeStr.Trim("<!>"); nsCParserNode theNode((CHTMLToken*)aToken,mLineNumber,mTokenizer->GetTokenRecycler()); STOP_TIMER(); result = (mSink)? mSink->AddDocTypeDecl(theNode, pc->mParseMode):NS_OK; START_TIMER(); } return result; } Loading Loading @@ -2235,7 +2269,12 @@ nsresult CNavDTD::CloseTransientStyles(eHTMLTags aChildTag){ nsresult CNavDTD::OpenHTML(const nsIParserNode& aNode){ NS_PRECONDITION(mBodyContext->GetCount() >= 0, kInvalidTagStackPos); STOP_TIMER(); nsresult result=(mSink) ? mSink->OpenHTML(aNode) : NS_OK; START_TIMER(); mBodyContext->Push((eHTMLTags)aNode.GetNodeType()); return result; } Loading @@ -2251,7 +2290,13 @@ nsresult CNavDTD::OpenHTML(const nsIParserNode& aNode){ */ nsresult CNavDTD::CloseHTML(const nsIParserNode& aNode){ NS_PRECONDITION(mBodyContext->GetCount() > 0, kInvalidTagStackPos); STOP_TIMER(); nsresult result=(mSink) ? mSink->CloseHTML(aNode) : NS_OK; START_TIMER(); mBodyContext->Pop(); return result; } Loading @@ -2268,9 +2313,15 @@ nsresult CNavDTD::CloseHTML(const nsIParserNode& aNode){ nsresult CNavDTD::OpenHead(const nsIParserNode& aNode){ //mBodyContext->Push(eHTMLTag_head); nsresult result=NS_OK; STOP_TIMER(); if(!mHasOpenHead++) { result=(mSink) ? mSink->OpenHead(aNode) : NS_OK; } START_TIMER(); return result; } Loading @@ -2286,7 +2337,13 @@ nsresult CNavDTD::CloseHead(const nsIParserNode& aNode){ nsresult result=NS_OK; if(mHasOpenHead) { if(0==--mHasOpenHead){ STOP_TIMER(); result=(mSink) ? mSink->CloseHead(aNode) : NS_OK; START_TIMER(); } } //mBodyContext->Pop(); Loading Loading @@ -2324,7 +2381,13 @@ nsresult CNavDTD::OpenBody(const nsIParserNode& aNode){ } if(NS_OK==result) { STOP_TIMER(); result=(mSink) ? mSink->OpenBody(aNode) : NS_OK; START_TIMER(); if(!theBodyIsOpen) { mBodyContext->Push((eHTMLTags)aNode.GetNodeType()); mTokenizer->PrependTokens(mMisplacedContent); Loading @@ -2344,7 +2407,13 @@ nsresult CNavDTD::OpenBody(const nsIParserNode& aNode){ */ nsresult CNavDTD::CloseBody(const nsIParserNode& aNode){ NS_PRECONDITION(mBodyContext->GetCount() >= 0, kInvalidTagStackPos); STOP_TIMER(); nsresult result=(mSink) ? mSink->CloseBody(aNode) : NS_OK; START_TIMER(); mBodyContext->Pop(); return result; } Loading @@ -2360,7 +2429,13 @@ nsresult CNavDTD::CloseBody(const nsIParserNode& aNode){ nsresult CNavDTD::OpenForm(const nsIParserNode& aNode){ if(mHasOpenForm) CloseForm(aNode); STOP_TIMER(); nsresult result=(mSink) ? mSink->OpenForm(aNode) : NS_OK; START_TIMER(); if(NS_OK==result) mHasOpenForm=PR_TRUE; return result; Loading @@ -2379,7 +2454,13 @@ nsresult CNavDTD::CloseForm(const nsIParserNode& aNode){ nsresult result=NS_OK; if(mHasOpenForm) { mHasOpenForm=PR_FALSE; STOP_TIMER(); result=(mSink) ? mSink->CloseForm(aNode) : NS_OK; START_TIMER(); } return result; } Loading @@ -2395,7 +2476,13 @@ nsresult CNavDTD::CloseForm(const nsIParserNode& aNode){ nsresult CNavDTD::OpenMap(const nsIParserNode& aNode){ if(mHasOpenMap) CloseMap(aNode); STOP_TIMER(); nsresult result=(mSink) ? mSink->OpenMap(aNode) : NS_OK; START_TIMER(); if(NS_OK==result) { mBodyContext->Push((eHTMLTags)aNode.GetNodeType()); mHasOpenMap=PR_TRUE; Loading @@ -2416,7 +2503,13 @@ nsresult CNavDTD::CloseMap(const nsIParserNode& aNode){ nsresult result=NS_OK; if(mHasOpenMap) { mHasOpenMap=PR_FALSE; STOP_TIMER(); result=(mSink) ? mSink->CloseMap(aNode) : NS_OK; START_TIMER(); mBodyContext->Pop(); } return result; Loading @@ -2434,7 +2527,13 @@ nsresult CNavDTD::OpenFrameset(const nsIParserNode& aNode){ NS_PRECONDITION(mBodyContext->GetCount() >= 0, kInvalidTagStackPos); mHadFrameset=PR_TRUE; STOP_TIMER(); nsresult result=(mSink) ? mSink->OpenFrameset(aNode) : NS_OK; START_TIMER(); mBodyContext->Push((eHTMLTags)aNode.GetNodeType()); mHadFrameset=PR_TRUE; return result; Loading @@ -2450,7 +2549,13 @@ nsresult CNavDTD::OpenFrameset(const nsIParserNode& aNode){ */ nsresult CNavDTD::CloseFrameset(const nsIParserNode& aNode){ NS_PRECONDITION(mBodyContext->GetCount() > 0, kInvalidTagStackPos); STOP_TIMER(); nsresult result=(mSink) ? mSink->CloseFrameset(aNode) : NS_OK; START_TIMER(); mBodyContext->Pop(); return result; } Loading Loading @@ -2530,7 +2635,13 @@ CNavDTD::OpenContainer(const nsIParserNode& aNode,PRBool aClosedByStartTag){ break; default: STOP_TIMER(); result=(mSink) ? mSink->OpenContainer(aNode) : NS_OK; START_TIMER(); mBodyContext->Push((eHTMLTags)aNode.GetNodeType()); break; } Loading Loading @@ -2594,7 +2705,13 @@ CNavDTD::CloseContainer(const nsIParserNode& aNode,eHTMLTags aTag,PRBool aClosed case eHTMLTag_title: default: STOP_TIMER(); result=(mSink) ? mSink->CloseContainer(aNode) : NS_OK; START_TIMER(); mBodyContext->Pop(); break; } Loading Loading @@ -2716,7 +2833,13 @@ nsresult CNavDTD::AddLeaf(const nsIParserNode& aNode){ if(mSink){ eHTMLTags theTag=(eHTMLTags)aNode.GetNodeType(); OpenTransientStyles(theTag); STOP_TIMER(); result=mSink->AddLeaf(aNode); START_TIMER(); } return result; } Loading Loading @@ -2947,7 +3070,13 @@ nsITokenizer* CNavDTD::GetTokenizer(void) { * @return */ nsresult CNavDTD::WillResumeParse(void){ STOP_TIMER(); nsresult result=(mSink) ? mSink->WillResume() : NS_OK; START_TIMER(); return result; } Loading @@ -2958,7 +3087,13 @@ nsresult CNavDTD::WillResumeParse(void){ * @return error code */ nsresult CNavDTD::WillInterruptParse(void){ STOP_TIMER(); nsresult result=(mSink) ? mSink->WillInterrupt() : NS_OK; START_TIMER(); return result; } Loading
htmlparser/src/nsParser.cpp +25 −4 Original line number Diff line number Diff line Loading @@ -194,6 +194,11 @@ nsParser::nsParser(nsITokenObserver* anObserver) : mCommand(""), mUnusedInput("" mDTDVerification=PR_FALSE; mCharsetSource=kCharsetUninitialized; mInternalState=NS_OK; #ifdef RAPTOR_PERF_METRICS mParseTime.Reset(); #endif } Loading Loading @@ -635,6 +640,9 @@ nsresult nsParser::EnableParser(PRBool aState){ if(result!=NS_OK) result=mInternalState; } else { NS_STOP_STOPWATCH(mParseTime); } NS_STOP_STOPWATCH(mTotalTime) Loading @@ -649,9 +657,7 @@ nsresult nsParser::EnableParser(PRBool aState){ * @update vidur 4/12/99 * @return current state */ PRBool nsParser::IsParserEnabled() { PRBool nsParser::IsParserEnabled() { return mParserContext->mParserEnabled; } Loading @@ -669,6 +675,7 @@ nsParser::IsParserEnabled() */ nsresult nsParser::Parse(nsIURI* aURL,nsIStreamObserver* aListener,PRBool aVerifyEnabled, void* aKey,eParseMode aMode) { NS_START_STOPWATCH(mTotalTime) NS_PRECONDITION(0!=aURL,kNullURL); nsresult result=kBadURL; Loading Loading @@ -713,6 +720,7 @@ nsresult nsParser::Parse(nsIURI* aURL,nsIStreamObserver* aListener,PRBool aVerif */ nsresult nsParser::Parse(nsIInputStream& aStream,PRBool aVerifyEnabled, void* aKey,eParseMode aMode){ NS_START_STOPWATCH(mTotalTime) mDTDVerification=aVerifyEnabled; nsresult result=NS_ERROR_OUT_OF_MEMORY; Loading Loading @@ -902,6 +910,9 @@ nsresult nsParser::ParseFragment(const nsString& aSourceBuffer,void* aKey,nsITag nsresult nsParser::ResumeParse(nsIDTD* aDefaultDTD, PRBool aIsFinalChunk) { nsresult result=NS_OK; if(mParserContext->mParserEnabled && mInternalState!=NS_ERROR_HTMLPARSER_STOPPARSING) { NS_START_STOPWATCH(mParseTime) result=WillBuildModel(mParserContext->mScanner->GetFilename(),aDefaultDTD); if(mParserContext->mDTD) { mParserContext->mDTD->WillResumeParse(); Loading @@ -915,10 +926,18 @@ nsresult nsParser::ResumeParse(nsIDTD* aDefaultDTD, PRBool aIsFinalChunk) { ((eOnStop==mParserContext->mStreamListenerState) && (NS_OK==result))){ DidBuildModel(mStreamStatus); NS_STOP_STOPWATCH(mTotalTime); NS_STOP_STOPWATCH(mParseTime); #ifdef RAPTOR_PERF_METRICS printf("Total Time: "); mTotalTime.Print(); printf("\n"); printf("Parse Time: "); mParseTime.Print(); printf("\n"); #endif return mInternalState; } Loading @@ -939,6 +958,8 @@ nsresult nsParser::ResumeParse(nsIDTD* aDefaultDTD, PRBool aIsFinalChunk) { } }//if NS_STOP_STOPWATCH(mParseTime); return result; } Loading
htmlparser/src/nsParser.h +4 −0 Original line number Diff line number Diff line Loading @@ -381,9 +381,13 @@ protected: nsCharsetSource mCharsetSource; nsresult mInternalState; CObserverService mObserverService; #ifdef RAPTOR_PERF_METRICS public: Stopwatch mTotalTime; Stopwatch mParseTime; #endif }; Loading
parser/htmlparser/src/CNavDTD.cpp +152 −17 Original line number Diff line number Diff line Loading @@ -78,6 +78,20 @@ static eHTMLTags gWhitespaceTags[]={ #include "nsElementTable.h" #ifdef RAPTOR_PERF_METRICS # define START_TIMER() \ if(mParser) mParser->mParseTime.Start(PR_FALSE); # define STOP_TIMER() \ if(mParser) mParser->mParseTime.Stop(); #else # define STOP_TIMER() # define START_TIMER() #endif /*************************************************************** This the ITagHandler deque deallocator, needed by the CTagHandlerRegister Loading Loading @@ -487,8 +501,6 @@ eAutoDetectResult CNavDTD::CanParse(nsString& aContentType, nsString& aCommand, } PRTime gStartTime; /** * * @update gess5/18/98 Loading @@ -506,17 +518,15 @@ nsresult CNavDTD::WillBuildModel(nsString& aFilename,PRBool aNotifySink,nsString mHasOpenScript=PR_FALSE; if((aNotifySink) && (aSink)) { STOP_TIMER(); if(aSink && (!mSink)) { result=aSink->QueryInterface(kIHTMLContentSinkIID, (void **)&mSink); } result = aSink->WillBuildModel(); START_TIMER(); #ifdef RGESS_DEBUG gStartTime = PR_Now(); printf("Begin parsing...\n"); #endif result = aSink->WillBuildModel(); CStartToken theToken(eHTMLTag_html); HandleStartToken(&theToken); Loading Loading @@ -603,15 +613,6 @@ nsresult CNavDTD::DidBuildModel(nsresult anErrorCode,PRBool aNotifySink,nsIParse } } #ifdef RGESS_DEBUG PRTime theEnd= PR_Now(); PRTime creates, ustoms; LL_I2L(ustoms, 1000); LL_SUB(creates, theEnd, gStartTime); LL_DIV(creates, creates, ustoms); printf("End parse elapsed: %lldms\n",creates); #endif //let's only grab this state once! if(!gShowCRC) { gShowCRC=1; //this only indicates we'll not initialize again. Loading @@ -623,6 +624,8 @@ nsresult CNavDTD::DidBuildModel(nsresult anErrorCode,PRBool aNotifySink,nsIParse } } STOP_TIMER(); if(2==gShowCRC) { if(mComputedCRC32!=mExpectedCRC32) { if(mExpectedCRC32!=0) { Loading @@ -641,6 +644,9 @@ nsresult CNavDTD::DidBuildModel(nsresult anErrorCode,PRBool aNotifySink,nsIParse if(mDTDDebug) { mDTDDebug->DumpVectorRecord(); } START_TIMER(); } } } Loading Loading @@ -821,10 +827,16 @@ nsresult CNavDTD::DidHandleStartTag(nsCParserNode& aNode,eHTMLTags aChildTag){ case eHTMLTag_xmp: //grab the skipped content and dump it out as text... { STOP_TIMER(); const nsString& theText=aNode.GetSkippedContent(); if(0<theText.Length()) { CViewSourceHTML::WriteText(theText,*mSink,PR_TRUE,PR_FALSE); } START_TIMER(); } break; default: Loading Loading @@ -1285,8 +1297,14 @@ nsresult CNavDTD::HandleStartToken(CToken* aToken) { switch(theChildTag) { case eHTMLTag_area: STOP_TIMER(); if (mHasOpenMap && mSink) result=mSink->AddLeaf(*theNode); START_TIMER(); break; case eHTMLTag_image: Loading Loading @@ -1634,7 +1652,12 @@ nsresult CNavDTD::HandleCommentToken(CToken* aToken) { WriteTokenToLog(aToken); #endif STOP_TIMER(); nsresult result=(mSink) ? mSink->AddComment(aNode) : NS_OK; START_TIMER(); return result; } Loading Loading @@ -1704,7 +1727,12 @@ nsresult CNavDTD::HandleProcessingInstructionToken(CToken* aToken){ WriteTokenToLog(aToken); #endif STOP_TIMER(); nsresult result=(mSink) ? mSink->AddProcessingInstruction(aNode) : NS_OK; START_TIMER(); return result; } Loading @@ -1731,7 +1759,13 @@ nsresult CNavDTD::HandleDocTypeDeclToken(CToken* aToken){ mLineNumber += (docTypeStr).CountChar(kNewLine); docTypeStr.Trim("<!>"); nsCParserNode theNode((CHTMLToken*)aToken,mLineNumber,mTokenizer->GetTokenRecycler()); STOP_TIMER(); result = (mSink)? mSink->AddDocTypeDecl(theNode, pc->mParseMode):NS_OK; START_TIMER(); } return result; } Loading Loading @@ -2235,7 +2269,12 @@ nsresult CNavDTD::CloseTransientStyles(eHTMLTags aChildTag){ nsresult CNavDTD::OpenHTML(const nsIParserNode& aNode){ NS_PRECONDITION(mBodyContext->GetCount() >= 0, kInvalidTagStackPos); STOP_TIMER(); nsresult result=(mSink) ? mSink->OpenHTML(aNode) : NS_OK; START_TIMER(); mBodyContext->Push((eHTMLTags)aNode.GetNodeType()); return result; } Loading @@ -2251,7 +2290,13 @@ nsresult CNavDTD::OpenHTML(const nsIParserNode& aNode){ */ nsresult CNavDTD::CloseHTML(const nsIParserNode& aNode){ NS_PRECONDITION(mBodyContext->GetCount() > 0, kInvalidTagStackPos); STOP_TIMER(); nsresult result=(mSink) ? mSink->CloseHTML(aNode) : NS_OK; START_TIMER(); mBodyContext->Pop(); return result; } Loading @@ -2268,9 +2313,15 @@ nsresult CNavDTD::CloseHTML(const nsIParserNode& aNode){ nsresult CNavDTD::OpenHead(const nsIParserNode& aNode){ //mBodyContext->Push(eHTMLTag_head); nsresult result=NS_OK; STOP_TIMER(); if(!mHasOpenHead++) { result=(mSink) ? mSink->OpenHead(aNode) : NS_OK; } START_TIMER(); return result; } Loading @@ -2286,7 +2337,13 @@ nsresult CNavDTD::CloseHead(const nsIParserNode& aNode){ nsresult result=NS_OK; if(mHasOpenHead) { if(0==--mHasOpenHead){ STOP_TIMER(); result=(mSink) ? mSink->CloseHead(aNode) : NS_OK; START_TIMER(); } } //mBodyContext->Pop(); Loading Loading @@ -2324,7 +2381,13 @@ nsresult CNavDTD::OpenBody(const nsIParserNode& aNode){ } if(NS_OK==result) { STOP_TIMER(); result=(mSink) ? mSink->OpenBody(aNode) : NS_OK; START_TIMER(); if(!theBodyIsOpen) { mBodyContext->Push((eHTMLTags)aNode.GetNodeType()); mTokenizer->PrependTokens(mMisplacedContent); Loading @@ -2344,7 +2407,13 @@ nsresult CNavDTD::OpenBody(const nsIParserNode& aNode){ */ nsresult CNavDTD::CloseBody(const nsIParserNode& aNode){ NS_PRECONDITION(mBodyContext->GetCount() >= 0, kInvalidTagStackPos); STOP_TIMER(); nsresult result=(mSink) ? mSink->CloseBody(aNode) : NS_OK; START_TIMER(); mBodyContext->Pop(); return result; } Loading @@ -2360,7 +2429,13 @@ nsresult CNavDTD::CloseBody(const nsIParserNode& aNode){ nsresult CNavDTD::OpenForm(const nsIParserNode& aNode){ if(mHasOpenForm) CloseForm(aNode); STOP_TIMER(); nsresult result=(mSink) ? mSink->OpenForm(aNode) : NS_OK; START_TIMER(); if(NS_OK==result) mHasOpenForm=PR_TRUE; return result; Loading @@ -2379,7 +2454,13 @@ nsresult CNavDTD::CloseForm(const nsIParserNode& aNode){ nsresult result=NS_OK; if(mHasOpenForm) { mHasOpenForm=PR_FALSE; STOP_TIMER(); result=(mSink) ? mSink->CloseForm(aNode) : NS_OK; START_TIMER(); } return result; } Loading @@ -2395,7 +2476,13 @@ nsresult CNavDTD::CloseForm(const nsIParserNode& aNode){ nsresult CNavDTD::OpenMap(const nsIParserNode& aNode){ if(mHasOpenMap) CloseMap(aNode); STOP_TIMER(); nsresult result=(mSink) ? mSink->OpenMap(aNode) : NS_OK; START_TIMER(); if(NS_OK==result) { mBodyContext->Push((eHTMLTags)aNode.GetNodeType()); mHasOpenMap=PR_TRUE; Loading @@ -2416,7 +2503,13 @@ nsresult CNavDTD::CloseMap(const nsIParserNode& aNode){ nsresult result=NS_OK; if(mHasOpenMap) { mHasOpenMap=PR_FALSE; STOP_TIMER(); result=(mSink) ? mSink->CloseMap(aNode) : NS_OK; START_TIMER(); mBodyContext->Pop(); } return result; Loading @@ -2434,7 +2527,13 @@ nsresult CNavDTD::OpenFrameset(const nsIParserNode& aNode){ NS_PRECONDITION(mBodyContext->GetCount() >= 0, kInvalidTagStackPos); mHadFrameset=PR_TRUE; STOP_TIMER(); nsresult result=(mSink) ? mSink->OpenFrameset(aNode) : NS_OK; START_TIMER(); mBodyContext->Push((eHTMLTags)aNode.GetNodeType()); mHadFrameset=PR_TRUE; return result; Loading @@ -2450,7 +2549,13 @@ nsresult CNavDTD::OpenFrameset(const nsIParserNode& aNode){ */ nsresult CNavDTD::CloseFrameset(const nsIParserNode& aNode){ NS_PRECONDITION(mBodyContext->GetCount() > 0, kInvalidTagStackPos); STOP_TIMER(); nsresult result=(mSink) ? mSink->CloseFrameset(aNode) : NS_OK; START_TIMER(); mBodyContext->Pop(); return result; } Loading Loading @@ -2530,7 +2635,13 @@ CNavDTD::OpenContainer(const nsIParserNode& aNode,PRBool aClosedByStartTag){ break; default: STOP_TIMER(); result=(mSink) ? mSink->OpenContainer(aNode) : NS_OK; START_TIMER(); mBodyContext->Push((eHTMLTags)aNode.GetNodeType()); break; } Loading Loading @@ -2594,7 +2705,13 @@ CNavDTD::CloseContainer(const nsIParserNode& aNode,eHTMLTags aTag,PRBool aClosed case eHTMLTag_title: default: STOP_TIMER(); result=(mSink) ? mSink->CloseContainer(aNode) : NS_OK; START_TIMER(); mBodyContext->Pop(); break; } Loading Loading @@ -2716,7 +2833,13 @@ nsresult CNavDTD::AddLeaf(const nsIParserNode& aNode){ if(mSink){ eHTMLTags theTag=(eHTMLTags)aNode.GetNodeType(); OpenTransientStyles(theTag); STOP_TIMER(); result=mSink->AddLeaf(aNode); START_TIMER(); } return result; } Loading Loading @@ -2947,7 +3070,13 @@ nsITokenizer* CNavDTD::GetTokenizer(void) { * @return */ nsresult CNavDTD::WillResumeParse(void){ STOP_TIMER(); nsresult result=(mSink) ? mSink->WillResume() : NS_OK; START_TIMER(); return result; } Loading @@ -2958,7 +3087,13 @@ nsresult CNavDTD::WillResumeParse(void){ * @return error code */ nsresult CNavDTD::WillInterruptParse(void){ STOP_TIMER(); nsresult result=(mSink) ? mSink->WillInterrupt() : NS_OK; START_TIMER(); return result; } Loading
parser/htmlparser/src/nsParser.cpp +25 −4 Original line number Diff line number Diff line Loading @@ -194,6 +194,11 @@ nsParser::nsParser(nsITokenObserver* anObserver) : mCommand(""), mUnusedInput("" mDTDVerification=PR_FALSE; mCharsetSource=kCharsetUninitialized; mInternalState=NS_OK; #ifdef RAPTOR_PERF_METRICS mParseTime.Reset(); #endif } Loading Loading @@ -635,6 +640,9 @@ nsresult nsParser::EnableParser(PRBool aState){ if(result!=NS_OK) result=mInternalState; } else { NS_STOP_STOPWATCH(mParseTime); } NS_STOP_STOPWATCH(mTotalTime) Loading @@ -649,9 +657,7 @@ nsresult nsParser::EnableParser(PRBool aState){ * @update vidur 4/12/99 * @return current state */ PRBool nsParser::IsParserEnabled() { PRBool nsParser::IsParserEnabled() { return mParserContext->mParserEnabled; } Loading @@ -669,6 +675,7 @@ nsParser::IsParserEnabled() */ nsresult nsParser::Parse(nsIURI* aURL,nsIStreamObserver* aListener,PRBool aVerifyEnabled, void* aKey,eParseMode aMode) { NS_START_STOPWATCH(mTotalTime) NS_PRECONDITION(0!=aURL,kNullURL); nsresult result=kBadURL; Loading Loading @@ -713,6 +720,7 @@ nsresult nsParser::Parse(nsIURI* aURL,nsIStreamObserver* aListener,PRBool aVerif */ nsresult nsParser::Parse(nsIInputStream& aStream,PRBool aVerifyEnabled, void* aKey,eParseMode aMode){ NS_START_STOPWATCH(mTotalTime) mDTDVerification=aVerifyEnabled; nsresult result=NS_ERROR_OUT_OF_MEMORY; Loading Loading @@ -902,6 +910,9 @@ nsresult nsParser::ParseFragment(const nsString& aSourceBuffer,void* aKey,nsITag nsresult nsParser::ResumeParse(nsIDTD* aDefaultDTD, PRBool aIsFinalChunk) { nsresult result=NS_OK; if(mParserContext->mParserEnabled && mInternalState!=NS_ERROR_HTMLPARSER_STOPPARSING) { NS_START_STOPWATCH(mParseTime) result=WillBuildModel(mParserContext->mScanner->GetFilename(),aDefaultDTD); if(mParserContext->mDTD) { mParserContext->mDTD->WillResumeParse(); Loading @@ -915,10 +926,18 @@ nsresult nsParser::ResumeParse(nsIDTD* aDefaultDTD, PRBool aIsFinalChunk) { ((eOnStop==mParserContext->mStreamListenerState) && (NS_OK==result))){ DidBuildModel(mStreamStatus); NS_STOP_STOPWATCH(mTotalTime); NS_STOP_STOPWATCH(mParseTime); #ifdef RAPTOR_PERF_METRICS printf("Total Time: "); mTotalTime.Print(); printf("\n"); printf("Parse Time: "); mParseTime.Print(); printf("\n"); #endif return mInternalState; } Loading @@ -939,6 +958,8 @@ nsresult nsParser::ResumeParse(nsIDTD* aDefaultDTD, PRBool aIsFinalChunk) { } }//if NS_STOP_STOPWATCH(mParseTime); return result; } Loading