Skip to content
This repository was archived by the owner on Feb 22, 2018. It is now read-only.

Commit 3f5e280

Browse files
committed
perf(nodecursor): do not grow/shrink the nodes list
This also enables one to construct a NodeCursor with a fixed size list of nodes.
1 parent ae24a25 commit 3f5e280

File tree

1 file changed

+8
-14
lines changed

1 file changed

+8
-14
lines changed

lib/core_dom/node_cursor.dart

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ part of angular.core.dom_internal;
22

33
class NodeCursor {
44
final stack = [];
5-
List<dom.Node> elements;
5+
List<dom.Node> elements; // may be a fixed length list.
66
int index = 0;
77

88
NodeCursor(this.elements);
@@ -29,21 +29,15 @@ class NodeCursor {
2929
index = stack.removeLast();
3030
}
3131

32-
void insertAnchorBefore(String name) {
33-
var parent = current.parentNode;
34-
var anchor = new dom.Comment('ANCHOR: $name');
35-
elements.insert(index++, anchor);
36-
if (parent != null) parent.insertBefore(anchor, current);
37-
}
38-
3932
NodeCursor replaceWithAnchor(String name) {
40-
insertAnchorBefore(name);
41-
var childCursor = remove();
42-
index--;
43-
return childCursor;
33+
var element = current;
34+
var parent = element.parentNode;
35+
var anchor = new dom.Comment('ANCHOR: $name');
36+
if (parent != null) parent.insertBefore(anchor, element);
37+
element.remove();
38+
elements[index] = anchor;
39+
return new NodeCursor([element]);
4440
}
4541

46-
NodeCursor remove() => new NodeCursor([elements.removeAt(index)..remove()]);
47-
4842
String toString() => "[NodeCursor: $elements $index]";
4943
}

0 commit comments

Comments
 (0)