Fixing bug 109400. Removing unnecessary layers of abstraction from nsHTMLTags that does nothing for us except using more memory than we need to use, and makes us slower. This makes nsHTMLTags::LookupTag() 4 times faster. r=harishd@netscape.com, rs=vidur@netscape.com

This commit is contained in:
jst@netscape.com
2001-11-28 06:13:11 +00:00
parent 551b74e49d
commit bc89fe4176
52 changed files with 2075 additions and 995 deletions

View File

@@ -52,7 +52,8 @@
#include "nsScanner.h"
static const char* gUserdefined = "userdefined";
static const PRUnichar sUserdefined[] = {'u', 's', 'e', 'r', 'd', 'e', 'f',
'i', 'n', 'e', 'd'};
static const PRUnichar kAttributeTerminalChars[] = {
PRUnichar('&'), PRUnichar('\b'), PRUnichar('\t'),
@@ -268,7 +269,7 @@ const nsAReadableString& CStartToken::GetStringValue()
{
if((eHTMLTag_unknown<mTypeID) && (mTypeID<eHTMLTag_text)) {
if(!mTextValue.Length()) {
mTextValue.AssignWithConversion(nsHTMLTags::GetStringValue((nsHTMLTag) mTypeID).get());
mTextValue.Assign(nsHTMLTags::GetStringValue((nsHTMLTag) mTypeID));
}
}
return mTextValue;
@@ -292,7 +293,7 @@ void CStartToken::GetSource(nsString& anOutputString){
if(mTextValue.Length()>0)
anOutputString.Append(mTextValue);
else
anOutputString.AssignWithConversion(GetTagName(mTypeID));
anOutputString.Assign(GetTagName(mTypeID));
anOutputString.AppendWithConversion('>');
}
}
@@ -315,7 +316,7 @@ void CStartToken::AppendSource(nsString& anOutputString){
if(mTextValue.Length()>0)
anOutputString+=mTextValue;
else
anOutputString.AppendWithConversion(GetTagName(mTypeID));
anOutputString.Append(GetTagName(mTypeID));
anOutputString.AppendWithConversion('>');
}
}
@@ -455,7 +456,7 @@ const nsAReadableString& CEndToken::GetStringValue()
{
if((eHTMLTag_unknown<mTypeID) && (mTypeID<eHTMLTag_text)) {
if(!mTextValue.Length()) {
mTextValue.AssignWithConversion(nsHTMLTags::GetStringValue((nsHTMLTag) mTypeID).get());
mTextValue.Assign(nsHTMLTags::GetStringValue((nsHTMLTag) mTypeID));
}
}
return mTextValue;
@@ -473,7 +474,7 @@ void CEndToken::GetSource(nsString& anOutputString){
if(mTextValue.Length()>0)
anOutputString.Append(mTextValue);
else
anOutputString.AppendWithConversion(GetTagName(mTypeID));
anOutputString.Append(GetTagName(mTypeID));
anOutputString.AppendWithConversion(">");
}
@@ -489,7 +490,7 @@ void CEndToken::AppendSource(nsString& anOutputString){
if(mTextValue.Length()>0)
anOutputString.Append(mTextValue);
else
anOutputString.AppendWithConversion(GetTagName(mTypeID));
anOutputString.Append(GetTagName(mTypeID));
anOutputString.AppendWithConversion(">");
}
@@ -643,8 +644,9 @@ nsresult CTextToken::ConsumeUntil(PRUnichar aChar,PRBool aIgnoreComments,nsScann
// 5. If the end of the document is reached and if we still don't have the condition in step 4. then
// assume that the prematured terminal string is the actual terminal string and goto step 1. This
// will be our last iteration.
nsAutoString theTerminalString(aEndTagName);
theTerminalString.InsertWithConversion("</",0,2);
const NS_NAMED_LITERAL_STRING(ltslash, "</");
const nsAString& theTerminalString = ltslash + aEndTagName;
PRUint32 termStrLen=theTerminalString.Length();
while((result == NS_OK) && !done) {
@@ -2266,15 +2268,18 @@ const nsAReadableString& CStyleToken::GetStringValue(void)
* @param
* @return
*/
const char* GetTagName(PRInt32 aTag) {
const nsAFlatCString& result =
nsHTMLTags::GetStringValue((nsHTMLTag) aTag);
if (0 == result.Length()) {
if(aTag>=eHTMLTag_userdefined)
return gUserdefined;
else return 0;
const PRUnichar* GetTagName(PRInt32 aTag)
{
const PRUnichar *result = nsHTMLTags::GetStringValue((nsHTMLTag) aTag);
if (result) {
return result;
}
return result.get();
if(aTag >= eHTMLTag_userdefined)
return sUserdefined;
return 0;
}