Bug 1355769 - Avoid malloc for nsHtml5ElementName when processing a non-interned element name. r=wchen
MozReview-Commit-ID: 4In5wo0flOB
This commit is contained in:
@@ -102,7 +102,8 @@ nsHtml5TreeBuilder::startTokenization(nsHtml5Tokenizer* self)
|
||||
if (nsHtml5Atoms::title == contextName || nsHtml5Atoms::desc == contextName || nsHtml5Atoms::foreignObject == contextName) {
|
||||
elementName = nsHtml5ElementName::ELT_FOREIGNOBJECT;
|
||||
}
|
||||
nsHtml5StackNode* node = new nsHtml5StackNode(elementName, elementName->camelCaseName, elt);
|
||||
nsHtml5StackNode* node =
|
||||
new nsHtml5StackNode(elementName, elementName->getCamelCaseName(), elt);
|
||||
currentPtr++;
|
||||
stack[currentPtr] = node;
|
||||
tokenizer->setStateAndEndTagExpectation(NS_HTML5TOKENIZER_DATA, contextName);
|
||||
@@ -114,7 +115,8 @@ nsHtml5TreeBuilder::startTokenization(nsHtml5Tokenizer* self)
|
||||
} else if (nsHtml5Atoms::annotation_xml == contextName) {
|
||||
elementName = nsHtml5ElementName::ELT_ANNOTATION_XML;
|
||||
}
|
||||
nsHtml5StackNode* node = new nsHtml5StackNode(elementName, elt, elementName->name, false);
|
||||
nsHtml5StackNode* node =
|
||||
new nsHtml5StackNode(elementName, elt, elementName->getName(), false);
|
||||
currentPtr++;
|
||||
stack[currentPtr] = node;
|
||||
tokenizer->setStateAndEndTagExpectation(NS_HTML5TOKENIZER_DATA, contextName);
|
||||
@@ -610,7 +612,7 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu
|
||||
needToDropLF = false;
|
||||
starttagloop: for (; ; ) {
|
||||
int32_t group = elementName->getGroup();
|
||||
nsIAtom* name = elementName->name;
|
||||
nsIAtom* name = elementName->getName();
|
||||
if (isInForeign()) {
|
||||
nsHtml5StackNode* currentNode = stack[currentPtr];
|
||||
int32_t currNs = currentNode->ns;
|
||||
@@ -1144,7 +1146,8 @@ nsHtml5TreeBuilder::startTag(nsHtml5ElementName* elementName, nsHtml5HtmlAttribu
|
||||
case NS_HTML5TREE_BUILDER_B_OR_BIG_OR_CODE_OR_EM_OR_I_OR_S_OR_SMALL_OR_STRIKE_OR_STRONG_OR_TT_OR_U:
|
||||
case NS_HTML5TREE_BUILDER_FONT: {
|
||||
reconstructTheActiveFormattingElements();
|
||||
maybeForgetEarlierDuplicateFormattingElement(elementName->name, attributes);
|
||||
maybeForgetEarlierDuplicateFormattingElement(
|
||||
elementName->getName(), attributes);
|
||||
appendToCurrentNodeAndPushFormattingElementMayFoster(elementName, attributes);
|
||||
attributes = nullptr;
|
||||
NS_HTML5_BREAK(starttagloop);
|
||||
@@ -2226,7 +2229,7 @@ nsHtml5TreeBuilder::endTag(nsHtml5ElementName* elementName)
|
||||
needToDropLF = false;
|
||||
int32_t eltPos;
|
||||
int32_t group = elementName->getGroup();
|
||||
nsIAtom* name = elementName->name;
|
||||
nsIAtom* name = elementName->getName();
|
||||
for (; ; ) {
|
||||
if (isInForeign()) {
|
||||
if (stack[currentPtr]->name != name) {
|
||||
@@ -4002,9 +4005,11 @@ nsHtml5TreeBuilder::appendToCurrentNodeAndPushFormattingElementMayFoster(nsHtml5
|
||||
nsHtml5StackNode* current = stack[currentPtr];
|
||||
if (current->isFosterParenting()) {
|
||||
|
||||
elt = createAndInsertFosterParentedElement(kNameSpaceID_XHTML, elementName->name, attributes);
|
||||
elt = createAndInsertFosterParentedElement(
|
||||
kNameSpaceID_XHTML, elementName->getName(), attributes);
|
||||
} else {
|
||||
elt = createElement(kNameSpaceID_XHTML, elementName->name, attributes, current->node);
|
||||
elt = createElement(
|
||||
kNameSpaceID_XHTML, elementName->getName(), attributes, current->node);
|
||||
appendElement(elt, current->node);
|
||||
}
|
||||
nsHtml5StackNode* node = new nsHtml5StackNode(elementName, elt, clone);
|
||||
@@ -4017,7 +4022,8 @@ void
|
||||
nsHtml5TreeBuilder::appendToCurrentNodeAndPushElement(nsHtml5ElementName* elementName, nsHtml5HtmlAttributes* attributes)
|
||||
{
|
||||
nsIContentHandle* currentNode = stack[currentPtr]->node;
|
||||
nsIContentHandle* elt = createElement(kNameSpaceID_XHTML, elementName->name, attributes, currentNode);
|
||||
nsIContentHandle* elt = createElement(
|
||||
kNameSpaceID_XHTML, elementName->getName(), attributes, currentNode);
|
||||
appendElement(elt, currentNode);
|
||||
if (nsHtml5ElementName::ELT_TEMPLATE == elementName) {
|
||||
elt = getDocumentFragmentForTemplate(elt);
|
||||
@@ -4029,7 +4035,7 @@ nsHtml5TreeBuilder::appendToCurrentNodeAndPushElement(nsHtml5ElementName* elemen
|
||||
void
|
||||
nsHtml5TreeBuilder::appendToCurrentNodeAndPushElementMayFoster(nsHtml5ElementName* elementName, nsHtml5HtmlAttributes* attributes)
|
||||
{
|
||||
nsIAtom* popName = elementName->name;
|
||||
nsIAtom* popName = elementName->getName();
|
||||
nsIContentHandle* elt;
|
||||
nsHtml5StackNode* current = stack[currentPtr];
|
||||
if (current->isFosterParenting()) {
|
||||
@@ -4046,7 +4052,7 @@ nsHtml5TreeBuilder::appendToCurrentNodeAndPushElementMayFoster(nsHtml5ElementNam
|
||||
void
|
||||
nsHtml5TreeBuilder::appendToCurrentNodeAndPushElementMayFosterMathML(nsHtml5ElementName* elementName, nsHtml5HtmlAttributes* attributes)
|
||||
{
|
||||
nsIAtom* popName = elementName->name;
|
||||
nsIAtom* popName = elementName->getName();
|
||||
bool markAsHtmlIntegrationPoint = false;
|
||||
if (nsHtml5ElementName::ELT_ANNOTATION_XML == elementName && annotationXmlEncodingPermitsHtml(attributes)) {
|
||||
markAsHtmlIntegrationPoint = true;
|
||||
@@ -4078,7 +4084,7 @@ nsHtml5TreeBuilder::annotationXmlEncodingPermitsHtml(nsHtml5HtmlAttributes* attr
|
||||
void
|
||||
nsHtml5TreeBuilder::appendToCurrentNodeAndPushElementMayFosterSVG(nsHtml5ElementName* elementName, nsHtml5HtmlAttributes* attributes)
|
||||
{
|
||||
nsIAtom* popName = elementName->camelCaseName;
|
||||
nsIAtom* popName = elementName->getCamelCaseName();
|
||||
nsIContentHandle* elt;
|
||||
nsHtml5StackNode* current = stack[currentPtr];
|
||||
if (current->isFosterParenting()) {
|
||||
@@ -4100,9 +4106,14 @@ nsHtml5TreeBuilder::appendToCurrentNodeAndPushElementMayFoster(nsHtml5ElementNam
|
||||
nsHtml5StackNode* current = stack[currentPtr];
|
||||
if (current->isFosterParenting()) {
|
||||
|
||||
elt = createAndInsertFosterParentedElement(kNameSpaceID_XHTML, elementName->name, attributes, formOwner);
|
||||
elt = createAndInsertFosterParentedElement(
|
||||
kNameSpaceID_XHTML, elementName->getName(), attributes, formOwner);
|
||||
} else {
|
||||
elt = createElement(kNameSpaceID_XHTML, elementName->name, attributes, formOwner, current->node);
|
||||
elt = createElement(kNameSpaceID_XHTML,
|
||||
elementName->getName(),
|
||||
attributes,
|
||||
formOwner,
|
||||
current->node);
|
||||
appendElement(elt, current->node);
|
||||
}
|
||||
nsHtml5StackNode* node = new nsHtml5StackNode(elementName, elt);
|
||||
@@ -4129,7 +4140,7 @@ nsHtml5TreeBuilder::appendVoidElementToCurrentMayFoster(nsIAtom* name, nsHtml5Ht
|
||||
void
|
||||
nsHtml5TreeBuilder::appendVoidElementToCurrentMayFoster(nsHtml5ElementName* elementName, nsHtml5HtmlAttributes* attributes)
|
||||
{
|
||||
nsIAtom* popName = elementName->name;
|
||||
nsIAtom* popName = elementName->getName();
|
||||
nsIContentHandle* elt;
|
||||
nsHtml5StackNode* current = stack[currentPtr];
|
||||
if (current->isFosterParenting()) {
|
||||
@@ -4146,7 +4157,7 @@ nsHtml5TreeBuilder::appendVoidElementToCurrentMayFoster(nsHtml5ElementName* elem
|
||||
void
|
||||
nsHtml5TreeBuilder::appendVoidElementToCurrentMayFosterSVG(nsHtml5ElementName* elementName, nsHtml5HtmlAttributes* attributes)
|
||||
{
|
||||
nsIAtom* popName = elementName->camelCaseName;
|
||||
nsIAtom* popName = elementName->getCamelCaseName();
|
||||
nsIContentHandle* elt;
|
||||
nsHtml5StackNode* current = stack[currentPtr];
|
||||
if (current->isFosterParenting()) {
|
||||
@@ -4163,7 +4174,7 @@ nsHtml5TreeBuilder::appendVoidElementToCurrentMayFosterSVG(nsHtml5ElementName* e
|
||||
void
|
||||
nsHtml5TreeBuilder::appendVoidElementToCurrentMayFosterMathML(nsHtml5ElementName* elementName, nsHtml5HtmlAttributes* attributes)
|
||||
{
|
||||
nsIAtom* popName = elementName->name;
|
||||
nsIAtom* popName = elementName->getName();
|
||||
nsIContentHandle* elt;
|
||||
nsHtml5StackNode* current = stack[currentPtr];
|
||||
if (current->isFosterParenting()) {
|
||||
|
||||
Reference in New Issue
Block a user