on master help sign in
Make change list opcode implementations take a `ChangeList` instead of all of its parts

Kept adding one more field, and all of a sudden we have almost all the fields. Easier to just pass a reference to the whole `ChangeList`.

commite8b9146053fb3f0c2681fd7e577830e71bcbadff authorNick Fitzgerald <fitzgen@gmail.com> dateTue 12 Feb 2019, 06:17 (8 years ago) parent197e317
1 file changed+45−45
js/change-list.js+45−45
js/change-list.js+45−45
@@ -11,22 +11,22 @@ function string(mem, pointer, length) {
1111
1212const OP_TABLE = [
1313 // 0
14− function setText(stack, eventsTrampoline, listeners, mem8, mem32, i) {
14+ function setText(changeList, mem8, mem32, i) {
1515 // console.log("setText");
1616 const pointer = mem32[i++];
1717 const length = mem32[i++];
1818 const str = string(mem8, pointer, length);
1919 // console.log(" str =", str);
20− // console.log(" top(stack) =", top(stack));
21− top(stack).textContent = str;
20+ // console.log(" top(changeList.stack) =", top(changeList.stack));
21+ top(changeList.stack).textContent = str;
2222 return i;
2323 },
2424
2525 // 1
26− function removeSelfAndNextSiblings(stack, eventsTrampoline, listeners, mem8, mem32, i) {
26+ function removeSelfAndNextSiblings(changeList, mem8, mem32, i) {
2727 // console.log("removeSelfAndNextSiblings");
28− const node = stack.pop();
29− // console.log(" top(stack) =", node);
28+ const node = changeList.stack.pop();
29+ // console.log(" top(changeList.stack) =", node);
3030 let sibling = node.nextSibling;
3131 while (sibling) {
3232 const temp = sibling.nextSibling;
@@ -38,19 +38,19 @@ const OP_TABLE = [
3838 },
3939
4040 // 2
41− function replaceWith(stack, eventsTrampoline, listeners, mem8, mem32, i) {
41+ function replaceWith(changeList, mem8, mem32, i) {
4242 // console.log("replaceWith");
43− const newNode = stack.pop();
43+ const newNode = changeList.stack.pop();
4444 // console.log(" newNode =", newNode);
45− const oldNode = stack.pop();
45+ const oldNode = changeList.stack.pop();
4646 // console.log(" oldNode =", oldNode);
4747 oldNode.replaceWith(newNode);
48− stack.push(newNode);
48+ changeList.stack.push(newNode);
4949 return i;
5050 },
5151
5252 // 3
53− function setAttribute(stack, eventsTrampoline, listeners, mem8, mem32, i) {
53+ function setAttribute(changeList, mem8, mem32, i) {
5454 // console.log("setAttribute");
5555 const pointer1 = mem32[i++];
5656 const length1 = mem32[i++];
@@ -60,101 +60,101 @@ const OP_TABLE = [
6060 const length2 = mem32[i++];
6161 const value = string(mem8, pointer2, length2);
6262 // console.log(" value =", value);
63− // console.log(" top(stack) =", top(stack));
64− top(stack).setAttribute(name, value);
63+ // console.log(" top(changeList.stack) =", top(changeList.stack));
64+ top(changeList.stack).setAttribute(name, value);
6565 return i;
6666 },
6767
6868 // 4
69− function removeAttribute(stack, eventsTrampoline, listeners, mem8, mem32, i) {
69+ function removeAttribute(changeList, mem8, mem32, i) {
7070 // console.log("removeAttribute");
7171 const pointer = mem32[i++];
7272 const length = mem32[i++];
7373 const name = string(mem8, pointer, length);
7474 // console.log(" name =", name);
75− top(stack).removeAttribute(name);
75+ top(changeList.stack).removeAttribute(name);
7676 return i;
7777 },
7878
7979 // 5
80− function pushFirstChild(stack, eventsTrampoline, listeners, mem8, mem32, i) {
80+ function pushFirstChild(changeList, mem8, mem32, i) {
8181 // console.log("pushFirstChild");
82− // console.log(" top(stack) =", top(stack));
83− stack.push(top(stack).firstChild);
82+ // console.log(" top(changeList.stack) =", top(changeList.stack));
83+ changeList.stack.push(top(changeList.stack).firstChild);
8484 return i;
8585 },
8686
8787 // 6
88− function popPushNextSibling(stack, eventsTrampoline, listeners, mem8, mem32, i) {
88+ function popPushNextSibling(changeList, mem8, mem32, i) {
8989 // console.log("popPushNextSibling");
90− // console.log(" top(stack) =", top(stack));
91− const node = stack.pop();
92− stack.push(node.nextSibling);
90+ // console.log(" top(changeList.stack) =", top(changeList.stack));
91+ const node = changeList.stack.pop();
92+ changeList.stack.push(node.nextSibling);
9393 return i;
9494 },
9595
9696 // 7
97− function pop(stack, eventsTrampoline, listeners, mem8, mem32, i) {
97+ function pop(changeList, mem8, mem32, i) {
9898 // console.log("pop");
99− // console.log(" top(stack) =", top(stack));
100− stack.pop();
99+ // console.log(" top(changeList.stack) =", top(changeList.stack));
100+ changeList.stack.pop();
101101 return i;
102102 },
103103
104104 // 8
105− function appendChild(stack, eventsTrampoline, listeners, mem8, mem32, i) {
105+ function appendChild(changeList, mem8, mem32, i) {
106106 // console.log("appendChild");
107− // console.log(" top(stack) =", top(stack));
108− const child = stack.pop();
109− top(stack).appendChild(child);
107+ // console.log(" top(changeList.stack) =", top(changeList.stack));
108+ const child = changeList.stack.pop();
109+ top(changeList.stack).appendChild(child);
110110 return i;
111111 },
112112
113113 // 9
114− function createTextNode(stack, eventsTrampoline, listeners, mem8, mem32, i) {
114+ function createTextNode(changeList, mem8, mem32, i) {
115115 // console.log("appendChild");
116116 const pointer = mem32[i++];
117117 const length = mem32[i++];
118118 const text = string(mem8, pointer, length);
119119 // console.log(" text =", text);
120− // console.log(" top(stack) =", top(stack));
121− stack.push(document.createTextNode(text));
120+ // console.log(" top(changeList.stack) =", top(changeList.stack));
121+ changeList.stack.push(document.createTextNode(text));
122122 return i;
123123 },
124124
125125 // 10
126− function createElement(stack, eventsTrampoline, listeners, mem8, mem32, i) {
126+ function createElement(changeList, mem8, mem32, i) {
127127 // console.log("createElement");
128128 const pointer = mem32[i++];
129129 const length = mem32[i++];
130130 const tagName = string(mem8, pointer, length);
131131 // console.log(" tagName =", tagName);
132− // console.log(" top(stack) =", top(stack));
133− stack.push(document.createElement(tagName));
132+ // console.log(" top(changeList.stack) =", top(changeList.stack));
133+ changeList.stack.push(document.createElement(tagName));
134134 return i;
135135 },
136136
137137 // 11
138− function newEventListener(stack, eventsTrampoline, listeners, mem8, mem32, i) {
138+ function newEventListener(changeList, mem8, mem32, i) {
139139 const pointer = mem32[i++];
140140 const length = mem32[i++];
141141 const eventType = string(mem8, pointer, length);
142142 const a = mem32[i++];
143143 const b = mem32[i++];
144− const el = top(stack);
145− const listener = new Listener(a, b, eventType, eventsTrampoline, el);
146− listeners.add(listener);
144+ const el = top(changeList.stack);
145+ const listener = new Listener(a, b, eventType, changeList.eventsTrampoline, el);
146+ changeList.listeners.add(listener);
147147 el.addEventListener(eventType, listener.callback);
148148 el[`dodrio-${eventType}`] = listener;
149149 return i;
150150 },
151151
152152 // 12
153− function updateEventListener(stack, eventsTrampoline, listeners, mem8, mem32, i) {
153+ function updateEventListener(changeList, mem8, mem32, i) {
154154 const pointer = mem32[i++];
155155 const length = mem32[i++];
156156 const eventType = string(mem8, pointer, length);
157− const el = top(stack);
157+ const el = top(changeList.stack);
158158 const listener = el[`dodrio-${eventType}`];
159159 listener.a = mem32[i++];
160160 listener.b = mem32[i++];
@@ -162,14 +162,14 @@ const OP_TABLE = [
162162 },
163163
164164 // 13
165− function removeEventListener(stack, eventsTrampoline, listeners, mem8, mem32, i) {
165+ function removeEventListener(changeList, mem8, mem32, i) {
166166 const pointer = mem32[i++];
167167 const length = mem32[i++];
168168 const eventType = string(mem8, pointer, length);
169− const el = top(stack);
169+ const el = top(changeList.stack);
170170 const listener = el[`dodrio-${eventType}`];
171171 el.removeEventListener(eventType, listener.callback);
172− listeners.delete(listener);
172+ changeList.listeners.delete(listener);
173173 return i;
174174 }
175175];
@@ -250,7 +250,7 @@ class ChangeList {
250250 // console.log();
251251 // console.log(OP_TABLE[op].name);
252252 // console.log(this.stack);
253− i = OP_TABLE[op](this.stack, this.eventsTrampoline, this.listeners, mem8, mem32, i);
253+ i = OP_TABLE[op](this, mem8, mem32, i);
254254 }
255255 }
256256