Skip to content

Commit d5570ad

Browse files
committed
reuse array in findAppropriatePlaceForInsertingNode
1 parent e8726ba commit d5570ad

1 file changed

Lines changed: 20 additions & 6 deletions

File tree

src/main/java/ch/digitalfondue/jfiveparse/TreeConstructor.java

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,9 @@ class TreeConstructor {
9898
private boolean quirksMode;
9999
private boolean inHtmlContent;
100100

101+
// ----
102+
// used in findAppropriatePlaceForInsertingNode
103+
private final Node[] insertionBase = new Node[2];
101104
// ----
102105

103106
void setTokenizerState(int state) {
@@ -607,7 +610,8 @@ Element insertHtmlElementToken() {
607610
// ------------------
608611

609612
// appropriate place for inserting a node
610-
Node[] findAppropriatePlaceForInsertingNode(Element overrideTarget) {
613+
// /!\ the returned array is shared /!\, don't modify it
614+
private Node[] findAppropriatePlaceForInsertingNode(Element overrideTarget) {
611615
Element target = overrideTarget != null ? overrideTarget : getCurrentNode();
612616
int targetNameID = target.nodeNameID;
613617
if (fosterParentingEnabled && (Node.NAMESPACE_HTML_ID == target.namespaceID && (
@@ -625,23 +629,33 @@ Node[] findAppropriatePlaceForInsertingNode(Element overrideTarget) {
625629
// 3
626630
if (lastTemplatePos != -1 && ((lastTablePos == -1) || (lastTemplatePos > lastTablePos))) {
627631
// inside the template
628-
return new Node[] { openElements.get(lastTemplatePos), null };
632+
insertionBase[0] = openElements.get(lastTemplatePos);
633+
insertionBase[1] = null;
634+
return insertionBase;
629635
}
630636
// 4
631637
if (lastTablePos == -1) {
632-
return new Node[] { openElements.get(0), null };
638+
insertionBase[0] = openElements.get(0);
639+
insertionBase[1] = null;
640+
return insertionBase;
633641
}
634642
// 5
635643
Element lastTable = openElements.get(lastTablePos);
636644
if (lastTable.getParentNode() != null) {
637-
return new Node[] { lastTable.getParentNode(), lastTable };
645+
insertionBase[0] = lastTable.getParentNode();
646+
insertionBase[1] = lastTable;
647+
return insertionBase;
638648
}
639649
// 6
640650
Element previous = openElements.get(lastTablePos - 1);
641651
// 7
642-
return new Node[] { previous, null };
652+
insertionBase[0] = previous;
653+
insertionBase[1] = null;
654+
return insertionBase;
643655
} else {
644-
return new Node[] { target, null };
656+
insertionBase[0] = target;
657+
insertionBase[1] = null;
658+
return insertionBase;
645659
}
646660
}
647661

0 commit comments

Comments
 (0)