Bug 1355779 - Skip interned nsHtml5ElementName lookup for Custom Elements (ones with hyphen). r=wchen

MozReview-Commit-ID: 4xQlhExyo7d
This commit is contained in:
Henri Sivonen
2017-04-12 14:28:49 +03:00
parent 9c3ac1b327
commit 89dc7f5ddb
6 changed files with 189 additions and 138 deletions

View File

@@ -115,6 +115,7 @@ nsHtml5ElementName::setNameForNonInterned(nsIAtom* name)
(NS_HTML5TREE_BUILDER_OTHER | NS_HTML5ELEMENT_NAME_NOT_INTERNED));
}
nsHtml5ElementName* nsHtml5ElementName::ELT_ANNOTATION_XML = nullptr;
nsHtml5ElementName* nsHtml5ElementName::ELT_BIG = nullptr;
nsHtml5ElementName* nsHtml5ElementName::ELT_BDO = nullptr;
nsHtml5ElementName* nsHtml5ElementName::ELT_COL = nullptr;
@@ -224,7 +225,6 @@ nsHtml5ElementName* nsHtml5ElementName::ELT_MALIGNMARK = nullptr;
nsHtml5ElementName* nsHtml5ElementName::ELT_MASK = nullptr;
nsHtml5ElementName* nsHtml5ElementName::ELT_TRACK = nullptr;
nsHtml5ElementName* nsHtml5ElementName::ELT_DL = nullptr;
nsHtml5ElementName* nsHtml5ElementName::ELT_ANNOTATION_XML = nullptr;
nsHtml5ElementName* nsHtml5ElementName::ELT_HTML = nullptr;
nsHtml5ElementName* nsHtml5ElementName::ELT_OL = nullptr;
nsHtml5ElementName* nsHtml5ElementName::ELT_LABEL = nullptr;
@@ -340,28 +340,32 @@ static int32_t const ELEMENT_HASHES_DATA[] = {
1786534215, 1790207270, 1797585096, 1798686984, 1803876550, 1803929812,
1803929861, 1805502724, 1805647874, 1806806678, 1807599880, 1818230786,
1818755074, 1853642948, 1854228692, 1854228698, 1854245076, 1857653029,
1864368130, 1864643294, 1868312196, 1870135298, 1870268949, 1873281026,
1874053333, 1874102998, 1881288348, 1881498736, 1881613047, 1881669634,
1884120164, 1887579800, 1889085973, 1898223949, 1898753862, 1899272519,
1900845386, 1902641154, 1903302038, 1904412884, 1905563974, 1906087319,
1906135367, 1907435316, 1907661127, 1907959605, 1914900309, 1919418370,
1925844629, 1932928296, 1934172497, 1935549734, 1938817026, 1939219752,
1941178676, 1941221172, 1963982850, 1965115924, 1965334268, 1966223078,
1967128578, 1967760215, 1967788867, 1967795910, 1967795958, 1968053806,
1968836118, 1971461414, 1971465813, 1971938532, 1973420034, 1982173479,
1982935782, 1983533124, 1983633431, 1986527234, 1988763672, 1990037800,
1998585858, 1998724870, 1999397992, 2001309869, 2001349704, 2001349720,
2001349736, 2001392795, 2001392796, 2001392798, 2001495140, 2003183333,
2004635806, 2005324101, 2005719336, 2005925890, 2006028454, 2006329158,
2006896969, 2006974466, 2007601444, 2007781534, 2008125638, 2008340774,
2008851557, 2008994116, 2021937364, 2051837468, 2060065124, 2068523853,
2068523856, 2070023911, 2083120164, 2085266636, 2091479332, 2092255447,
2092557349
1864368130, 1868312196, 1870135298, 1870268949, 1873281026, 1874053333,
1874102998, 1881288348, 1881498736, 1881613047, 1881669634, 1884120164,
1887579800, 1889085973, 1898223949, 1898753862, 1899272519, 1900845386,
1902641154, 1903302038, 1904412884, 1905563974, 1906087319, 1906135367,
1907435316, 1907661127, 1907959605, 1914900309, 1919418370, 1925844629,
1932928296, 1934172497, 1935549734, 1938817026, 1939219752, 1941178676,
1941221172, 1963982850, 1965115924, 1965334268, 1966223078, 1967128578,
1967760215, 1967788867, 1967795910, 1967795958, 1968053806, 1968836118,
1971461414, 1971465813, 1971938532, 1973420034, 1982173479, 1982935782,
1983533124, 1983633431, 1986527234, 1988763672, 1990037800, 1998585858,
1998724870, 1999397992, 2001309869, 2001349704, 2001349720, 2001349736,
2001392795, 2001392796, 2001392798, 2001495140, 2003183333, 2004635806,
2005324101, 2005719336, 2005925890, 2006028454, 2006329158, 2006896969,
2006974466, 2007601444, 2007781534, 2008125638, 2008340774, 2008851557,
2008994116, 2021937364, 2051837468, 2060065124, 2068523853, 2068523856,
2070023911, 2083120164, 2085266636, 2091479332, 2092255447, 2092557349
};
staticJArray<int32_t,int32_t> nsHtml5ElementName::ELEMENT_HASHES = { ELEMENT_HASHES_DATA, MOZ_ARRAY_LENGTH(ELEMENT_HASHES_DATA) };
void
nsHtml5ElementName::initializeStatics()
{
ELT_ANNOTATION_XML =
new nsHtml5ElementName(nsHtml5Atoms::annotation_xml,
nsHtml5Atoms::annotation_xml,
NS_HTML5TREE_BUILDER_ANNOTATION_XML |
NS_HTML5ELEMENT_NAME_SCOPING_AS_MATHML);
ELT_BIG = new nsHtml5ElementName(nsHtml5Atoms::big, nsHtml5Atoms::big, NS_HTML5TREE_BUILDER_B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U);
ELT_BDO = new nsHtml5ElementName(nsHtml5Atoms::bdo, nsHtml5Atoms::bdo, NS_HTML5TREE_BUILDER_OTHER);
ELT_COL = new nsHtml5ElementName(nsHtml5Atoms::col, nsHtml5Atoms::col, NS_HTML5TREE_BUILDER_COL | NS_HTML5ELEMENT_NAME_SPECIAL);
@@ -657,11 +661,6 @@ nsHtml5ElementName::initializeStatics()
nsHtml5Atoms::dl,
NS_HTML5TREE_BUILDER_UL_OR_OL_OR_DL |
NS_HTML5ELEMENT_NAME_SPECIAL);
ELT_ANNOTATION_XML =
new nsHtml5ElementName(nsHtml5Atoms::annotation_xml,
nsHtml5Atoms::annotation_xml,
NS_HTML5TREE_BUILDER_ANNOTATION_XML |
NS_HTML5ELEMENT_NAME_SCOPING_AS_MATHML);
ELT_HTML = new nsHtml5ElementName(
nsHtml5Atoms::html,
nsHtml5Atoms::html,
@@ -967,7 +966,7 @@ nsHtml5ElementName::initializeStatics()
NS_HTML5TREE_BUILDER_TBODY_OR_THEAD_OR_TFOOT |
NS_HTML5ELEMENT_NAME_SPECIAL | NS_HTML5ELEMENT_NAME_FOSTER_PARENTING |
NS_HTML5ELEMENT_NAME_OPTIONAL_END_TAG);
ELEMENT_NAMES = new nsHtml5ElementName*[205];
ELEMENT_NAMES = new nsHtml5ElementName*[204];
ELEMENT_NAMES[0] = ELT_BIG;
ELEMENT_NAMES[1] = ELT_BDO;
ELEMENT_NAMES[2] = ELT_COL;
@@ -1077,107 +1076,107 @@ nsHtml5ElementName::initializeStatics()
ELEMENT_NAMES[106] = ELT_MASK;
ELEMENT_NAMES[107] = ELT_TRACK;
ELEMENT_NAMES[108] = ELT_DL;
ELEMENT_NAMES[109] = ELT_ANNOTATION_XML;
ELEMENT_NAMES[110] = ELT_HTML;
ELEMENT_NAMES[111] = ELT_OL;
ELEMENT_NAMES[112] = ELT_LABEL;
ELEMENT_NAMES[113] = ELT_UL;
ELEMENT_NAMES[114] = ELT_SMALL;
ELEMENT_NAMES[115] = ELT_SYMBOL;
ELEMENT_NAMES[116] = ELT_ALTGLYPHITEM;
ELEMENT_NAMES[117] = ELT_ANIMATETRANSFORM;
ELEMENT_NAMES[118] = ELT_ACRONYM;
ELEMENT_NAMES[119] = ELT_EM;
ELEMENT_NAMES[120] = ELT_FORM;
ELEMENT_NAMES[121] = ELT_MENUITEM;
ELEMENT_NAMES[122] = ELT_PARAM;
ELEMENT_NAMES[123] = ELT_ANIMATEMOTION;
ELEMENT_NAMES[124] = ELT_BUTTON;
ELEMENT_NAMES[125] = ELT_CAPTION;
ELEMENT_NAMES[126] = ELT_FIGCAPTION;
ELEMENT_NAMES[127] = ELT_MN;
ELEMENT_NAMES[128] = ELT_KEYGEN;
ELEMENT_NAMES[129] = ELT_MAIN;
ELEMENT_NAMES[130] = ELT_OPTION;
ELEMENT_NAMES[131] = ELT_POLYGON;
ELEMENT_NAMES[132] = ELT_PATTERN;
ELEMENT_NAMES[133] = ELT_SPAN;
ELEMENT_NAMES[134] = ELT_SECTION;
ELEMENT_NAMES[135] = ELT_TSPAN;
ELEMENT_NAMES[136] = ELT_AUDIO;
ELEMENT_NAMES[137] = ELT_MO;
ELEMENT_NAMES[138] = ELT_VIDEO;
ELEMENT_NAMES[139] = ELT_COLGROUP;
ELEMENT_NAMES[140] = ELT_FEDISPLACEMENTMAP;
ELEMENT_NAMES[141] = ELT_HGROUP;
ELEMENT_NAMES[142] = ELT_RP;
ELEMENT_NAMES[143] = ELT_OPTGROUP;
ELEMENT_NAMES[144] = ELT_SAMP;
ELEMENT_NAMES[145] = ELT_STOP;
ELEMENT_NAMES[146] = ELT_BR;
ELEMENT_NAMES[147] = ELT_ABBR;
ELEMENT_NAMES[148] = ELT_ANIMATECOLOR;
ELEMENT_NAMES[149] = ELT_CENTER;
ELEMENT_NAMES[150] = ELT_HR;
ELEMENT_NAMES[151] = ELT_FEFUNCR;
ELEMENT_NAMES[152] = ELT_FECOMPONENTTRANSFER;
ELEMENT_NAMES[153] = ELT_FILTER;
ELEMENT_NAMES[154] = ELT_FOOTER;
ELEMENT_NAMES[155] = ELT_FEGAUSSIANBLUR;
ELEMENT_NAMES[156] = ELT_HEADER;
ELEMENT_NAMES[157] = ELT_MARKER;
ELEMENT_NAMES[158] = ELT_METER;
ELEMENT_NAMES[159] = ELT_NOBR;
ELEMENT_NAMES[160] = ELT_TR;
ELEMENT_NAMES[161] = ELT_ADDRESS;
ELEMENT_NAMES[162] = ELT_CANVAS;
ELEMENT_NAMES[163] = ELT_DEFS;
ELEMENT_NAMES[164] = ELT_DETAILS;
ELEMENT_NAMES[165] = ELT_MS;
ELEMENT_NAMES[166] = ELT_NOFRAMES;
ELEMENT_NAMES[167] = ELT_PROGRESS;
ELEMENT_NAMES[168] = ELT_DT;
ELEMENT_NAMES[169] = ELT_APPLET;
ELEMENT_NAMES[170] = ELT_BASEFONT;
ELEMENT_NAMES[171] = ELT_FOREIGNOBJECT;
ELEMENT_NAMES[172] = ELT_FIELDSET;
ELEMENT_NAMES[173] = ELT_FRAMESET;
ELEMENT_NAMES[174] = ELT_FEOFFSET;
ELEMENT_NAMES[175] = ELT_FESPOTLIGHT;
ELEMENT_NAMES[176] = ELT_FEPOINTLIGHT;
ELEMENT_NAMES[177] = ELT_FEDISTANTLIGHT;
ELEMENT_NAMES[178] = ELT_FONT;
ELEMENT_NAMES[179] = ELT_INPUT;
ELEMENT_NAMES[180] = ELT_LINEARGRADIENT;
ELEMENT_NAMES[181] = ELT_MTEXT;
ELEMENT_NAMES[182] = ELT_NOSCRIPT;
ELEMENT_NAMES[183] = ELT_RT;
ELEMENT_NAMES[184] = ELT_OBJECT;
ELEMENT_NAMES[185] = ELT_OUTPUT;
ELEMENT_NAMES[186] = ELT_PLAINTEXT;
ELEMENT_NAMES[187] = ELT_TT;
ELEMENT_NAMES[188] = ELT_RECT;
ELEMENT_NAMES[189] = ELT_RADIALGRADIENT;
ELEMENT_NAMES[190] = ELT_SELECT;
ELEMENT_NAMES[191] = ELT_SCRIPT;
ELEMENT_NAMES[192] = ELT_TFOOT;
ELEMENT_NAMES[193] = ELT_TEXT;
ELEMENT_NAMES[194] = ELT_MENU;
ELEMENT_NAMES[195] = ELT_FEDROPSHADOW;
ELEMENT_NAMES[196] = ELT_VIEW;
ELEMENT_NAMES[197] = ELT_FECOLORMATRIX;
ELEMENT_NAMES[198] = ELT_FECONVOLVEMATRIX;
ELEMENT_NAMES[199] = ELT_ISINDEX;
ELEMENT_NAMES[200] = ELT_BODY;
ELEMENT_NAMES[201] = ELT_FEMORPHOLOGY;
ELEMENT_NAMES[202] = ELT_RUBY;
ELEMENT_NAMES[203] = ELT_SUMMARY;
ELEMENT_NAMES[204] = ELT_TBODY;
ELEMENT_NAMES[109] = ELT_HTML;
ELEMENT_NAMES[110] = ELT_OL;
ELEMENT_NAMES[111] = ELT_LABEL;
ELEMENT_NAMES[112] = ELT_UL;
ELEMENT_NAMES[113] = ELT_SMALL;
ELEMENT_NAMES[114] = ELT_SYMBOL;
ELEMENT_NAMES[115] = ELT_ALTGLYPHITEM;
ELEMENT_NAMES[116] = ELT_ANIMATETRANSFORM;
ELEMENT_NAMES[117] = ELT_ACRONYM;
ELEMENT_NAMES[118] = ELT_EM;
ELEMENT_NAMES[119] = ELT_FORM;
ELEMENT_NAMES[120] = ELT_MENUITEM;
ELEMENT_NAMES[121] = ELT_PARAM;
ELEMENT_NAMES[122] = ELT_ANIMATEMOTION;
ELEMENT_NAMES[123] = ELT_BUTTON;
ELEMENT_NAMES[124] = ELT_CAPTION;
ELEMENT_NAMES[125] = ELT_FIGCAPTION;
ELEMENT_NAMES[126] = ELT_MN;
ELEMENT_NAMES[127] = ELT_KEYGEN;
ELEMENT_NAMES[128] = ELT_MAIN;
ELEMENT_NAMES[129] = ELT_OPTION;
ELEMENT_NAMES[130] = ELT_POLYGON;
ELEMENT_NAMES[131] = ELT_PATTERN;
ELEMENT_NAMES[132] = ELT_SPAN;
ELEMENT_NAMES[133] = ELT_SECTION;
ELEMENT_NAMES[134] = ELT_TSPAN;
ELEMENT_NAMES[135] = ELT_AUDIO;
ELEMENT_NAMES[136] = ELT_MO;
ELEMENT_NAMES[137] = ELT_VIDEO;
ELEMENT_NAMES[138] = ELT_COLGROUP;
ELEMENT_NAMES[139] = ELT_FEDISPLACEMENTMAP;
ELEMENT_NAMES[140] = ELT_HGROUP;
ELEMENT_NAMES[141] = ELT_RP;
ELEMENT_NAMES[142] = ELT_OPTGROUP;
ELEMENT_NAMES[143] = ELT_SAMP;
ELEMENT_NAMES[144] = ELT_STOP;
ELEMENT_NAMES[145] = ELT_BR;
ELEMENT_NAMES[146] = ELT_ABBR;
ELEMENT_NAMES[147] = ELT_ANIMATECOLOR;
ELEMENT_NAMES[148] = ELT_CENTER;
ELEMENT_NAMES[149] = ELT_HR;
ELEMENT_NAMES[150] = ELT_FEFUNCR;
ELEMENT_NAMES[151] = ELT_FECOMPONENTTRANSFER;
ELEMENT_NAMES[152] = ELT_FILTER;
ELEMENT_NAMES[153] = ELT_FOOTER;
ELEMENT_NAMES[154] = ELT_FEGAUSSIANBLUR;
ELEMENT_NAMES[155] = ELT_HEADER;
ELEMENT_NAMES[156] = ELT_MARKER;
ELEMENT_NAMES[157] = ELT_METER;
ELEMENT_NAMES[158] = ELT_NOBR;
ELEMENT_NAMES[159] = ELT_TR;
ELEMENT_NAMES[160] = ELT_ADDRESS;
ELEMENT_NAMES[161] = ELT_CANVAS;
ELEMENT_NAMES[162] = ELT_DEFS;
ELEMENT_NAMES[163] = ELT_DETAILS;
ELEMENT_NAMES[164] = ELT_MS;
ELEMENT_NAMES[165] = ELT_NOFRAMES;
ELEMENT_NAMES[166] = ELT_PROGRESS;
ELEMENT_NAMES[167] = ELT_DT;
ELEMENT_NAMES[168] = ELT_APPLET;
ELEMENT_NAMES[169] = ELT_BASEFONT;
ELEMENT_NAMES[170] = ELT_FOREIGNOBJECT;
ELEMENT_NAMES[171] = ELT_FIELDSET;
ELEMENT_NAMES[172] = ELT_FRAMESET;
ELEMENT_NAMES[173] = ELT_FEOFFSET;
ELEMENT_NAMES[174] = ELT_FESPOTLIGHT;
ELEMENT_NAMES[175] = ELT_FEPOINTLIGHT;
ELEMENT_NAMES[176] = ELT_FEDISTANTLIGHT;
ELEMENT_NAMES[177] = ELT_FONT;
ELEMENT_NAMES[178] = ELT_INPUT;
ELEMENT_NAMES[179] = ELT_LINEARGRADIENT;
ELEMENT_NAMES[180] = ELT_MTEXT;
ELEMENT_NAMES[181] = ELT_NOSCRIPT;
ELEMENT_NAMES[182] = ELT_RT;
ELEMENT_NAMES[183] = ELT_OBJECT;
ELEMENT_NAMES[184] = ELT_OUTPUT;
ELEMENT_NAMES[185] = ELT_PLAINTEXT;
ELEMENT_NAMES[186] = ELT_TT;
ELEMENT_NAMES[187] = ELT_RECT;
ELEMENT_NAMES[188] = ELT_RADIALGRADIENT;
ELEMENT_NAMES[189] = ELT_SELECT;
ELEMENT_NAMES[190] = ELT_SCRIPT;
ELEMENT_NAMES[191] = ELT_TFOOT;
ELEMENT_NAMES[192] = ELT_TEXT;
ELEMENT_NAMES[193] = ELT_MENU;
ELEMENT_NAMES[194] = ELT_FEDROPSHADOW;
ELEMENT_NAMES[195] = ELT_VIEW;
ELEMENT_NAMES[196] = ELT_FECOLORMATRIX;
ELEMENT_NAMES[197] = ELT_FECONVOLVEMATRIX;
ELEMENT_NAMES[198] = ELT_ISINDEX;
ELEMENT_NAMES[199] = ELT_BODY;
ELEMENT_NAMES[200] = ELT_FEMORPHOLOGY;
ELEMENT_NAMES[201] = ELT_RUBY;
ELEMENT_NAMES[202] = ELT_SUMMARY;
ELEMENT_NAMES[203] = ELT_TBODY;
}
void
nsHtml5ElementName::releaseStatics()
{
delete ELT_ANNOTATION_XML;
delete ELT_BIG;
delete ELT_BDO;
delete ELT_COL;
@@ -1287,7 +1286,6 @@ nsHtml5ElementName::releaseStatics()
delete ELT_MASK;
delete ELT_TRACK;
delete ELT_DL;
delete ELT_ANNOTATION_XML;
delete ELT_HTML;
delete ELT_OL;
delete ELT_LABEL;