@@ -11,17 +11,17 @@ function string(mem, pointer, length) {
1111
1212const OP_TABLE = [
1313 // 0
14− function setText(changeList, mem8, mem32, i) {
14+ function setText(interpreter, mem8, mem32, i) {
1515 const pointer = mem32[i++];
1616 const length = mem32[i++];
1717 const str = string(mem8, pointer, length);
18− top(changeList.stack).textContent = str;
18+ top(interpreter.stack).textContent = str;
1919 return i;
2020 },
2121
2222 // 1
23− function removeSelfAndNextSiblings(changeList, mem8, mem32, i) {
24− const node = changeList.stack.pop();
23+ function removeSelfAndNextSiblings(interpreter, mem8, mem32, i) {
24+ const node = interpreter.stack.pop();
2525 let sibling = node.nextSibling;
2626 while (sibling) {
2727 const temp = sibling.nextSibling;
@@ -33,21 +33,21 @@ const OP_TABLE = [
3333 },
3434
3535 // 2
36− function replaceWith(changeList, mem8, mem32, i) {
37− const newNode = changeList.stack.pop();
38− const oldNode = changeList.stack.pop();
36+ function replaceWith(interpreter, mem8, mem32, i) {
37+ const newNode = interpreter.stack.pop();
38+ const oldNode = interpreter.stack.pop();
3939 oldNode.replaceWith(newNode);
40− changeList.stack.push(newNode);
40+ interpreter.stack.push(newNode);
4141 return i;
4242 },
4343
4444 // 3
45− function setAttribute(changeList, mem8, mem32, i) {
45+ function setAttribute(interpreter, mem8, mem32, i) {
4646 const nameId = mem32[i++];
4747 const valueId = mem32[i++];
48− const name = changeList.getString(nameId);
49− const value = changeList.getString(valueId);
50− const node = top(changeList.stack);
48+ const name = interpreter.getString(nameId);
49+ const value = interpreter.getString(valueId);
50+ const node = top(interpreter.stack);
5151 node.setAttribute(name, value);
5252
5353 // Some attributes are "volatile" and don't work through `setAttribute`.
@@ -65,10 +65,10 @@ const OP_TABLE = [
6565 },
6666
6767 // 4
68− function removeAttribute(changeList, mem8, mem32, i) {
68+ function removeAttribute(interpreter, mem8, mem32, i) {
6969 const nameId = mem32[i++];
70− const name = changeList.getString(nameId);
71− const node = top(changeList.stack);
70+ const name = interpreter.getString(nameId);
71+ const node = top(interpreter.stack);
7272 node.removeAttribute(name);
7373
7474 // Some attributes are "volatile" and don't work through `removeAttribute`.
@@ -86,120 +86,120 @@ const OP_TABLE = [
8686 },
8787
8888 // 5
89− function pushFirstChild(changeList, mem8, mem32, i) {
90− changeList.stack.push(top(changeList.stack).firstChild);
89+ function pushFirstChild(interpreter, mem8, mem32, i) {
90+ interpreter.stack.push(top(interpreter.stack).firstChild);
9191 return i;
9292 },
9393
9494 // 6
95− function popPushNextSibling(changeList, mem8, mem32, i) {
96− const node = changeList.stack.pop();
97− changeList.stack.push(node.nextSibling);
95+ function popPushNextSibling(interpreter, mem8, mem32, i) {
96+ const node = interpreter.stack.pop();
97+ interpreter.stack.push(node.nextSibling);
9898 return i;
9999 },
100100
101101 // 7
102− function pop(changeList, mem8, mem32, i) {
103− changeList.stack.pop();
102+ function pop(interpreter, mem8, mem32, i) {
103+ interpreter.stack.pop();
104104 return i;
105105 },
106106
107107 // 8
108− function appendChild(changeList, mem8, mem32, i) {
109− const child = changeList.stack.pop();
110− top(changeList.stack).appendChild(child);
108+ function appendChild(interpreter, mem8, mem32, i) {
109+ const child = interpreter.stack.pop();
110+ top(interpreter.stack).appendChild(child);
111111 return i;
112112 },
113113
114114 // 9
115− function createTextNode(changeList, mem8, mem32, i) {
115+ function createTextNode(interpreter, mem8, mem32, i) {
116116 const pointer = mem32[i++];
117117 const length = mem32[i++];
118118 const text = string(mem8, pointer, length);
119− changeList.stack.push(document.createTextNode(text));
119+ interpreter.stack.push(document.createTextNode(text));
120120 return i;
121121 },
122122
123123 // 10
124− function createElement(changeList, mem8, mem32, i) {
124+ function createElement(interpreter, mem8, mem32, i) {
125125 const tagNameId = mem32[i++];
126− const tagName = changeList.getString(tagNameId);
127− changeList.stack.push(document.createElement(tagName));
126+ const tagName = interpreter.getString(tagNameId);
127+ interpreter.stack.push(document.createElement(tagName));
128128 return i;
129129 },
130130
131131 // 11
132− function newEventListener(changeList, mem8, mem32, i) {
132+ function newEventListener(interpreter, mem8, mem32, i) {
133133 const eventId = mem32[i++];
134− const eventType = changeList.getString(eventId);
134+ const eventType = interpreter.getString(eventId);
135135 const a = mem32[i++];
136136 const b = mem32[i++];
137− const el = top(changeList.stack);
138− el.addEventListener(eventType, changeList.eventHandler);
137+ const el = top(interpreter.stack);
138+ el.addEventListener(eventType, interpreter.eventHandler);
139139 el[`dodrio-a-${eventType}`] = a;
140140 el[`dodrio-b-${eventType}`] = b;
141141 return i;
142142 },
143143
144144 // 12
145− function updateEventListener(changeList, mem8, mem32, i) {
145+ function updateEventListener(interpreter, mem8, mem32, i) {
146146 const eventId = mem32[i++];
147− const eventType = changeList.getString(eventId);
148− const el = top(changeList.stack);
147+ const eventType = interpreter.getString(eventId);
148+ const el = top(interpreter.stack);
149149 el[`dodrio-a-${eventType}`] = mem32[i++];
150150 el[`dodrio-b-${eventType}`] = mem32[i++];
151151 return i;
152152 },
153153
154154 // 13
155− function removeEventListener(changeList, mem8, mem32, i) {
155+ function removeEventListener(interpreter, mem8, mem32, i) {
156156 const eventId = mem32[i++];
157− const eventType = changeList.getString(eventId);
158− const el = top(changeList.stack);
159− el.removeEventListener(eventType, changeList.eventHandler);
157+ const eventType = interpreter.getString(eventId);
158+ const el = top(interpreter.stack);
159+ el.removeEventListener(eventType, interpreter.eventHandler);
160160 return i;
161161 },
162162
163163 // 14
164− function addString(changeList, mem8, mem32, i) {
164+ function addString(interpreter, mem8, mem32, i) {
165165 const pointer = mem32[i++];
166166 const length = mem32[i++];
167167 const id = mem32[i++];
168168 const str = string(mem8, pointer, length);
169− changeList.addString(str, id);
169+ interpreter.addString(str, id);
170170 return i;
171171 },
172172
173173 // 15
174− function dropString(changeList, mem8, mem32, i) {
174+ function dropString(interpreter, mem8, mem32, i) {
175175 const id = mem32[i++];
176− changeList.dropString(id);
176+ interpreter.dropString(id);
177177 return i;
178178 },
179179
180180 // 16
181− function createElementNS(changeList, mem8, mem32, i) {
181+ function createElementNS(interpreter, mem8, mem32, i) {
182182 const tagNameId = mem32[i++];
183− const tagName = changeList.getString(tagNameId);
183+ const tagName = interpreter.getString(tagNameId);
184184 const nsId = mem32[i++];
185− const ns = changeList.getString(nsId);
186− changeList.stack.push(document.createElementNS(ns, tagName));
185+ const ns = interpreter.getString(nsId);
186+ interpreter.stack.push(document.createElementNS(ns, tagName));
187187 return i;
188188 },
189189
190190 // 17
191− function setAttributeNS(changeList, mem8, mem32, i) {
191+ function setAttributeNS(interpreter, mem8, mem32, i) {
192192 const nameId = mem32[i++];
193193 const valueId = mem32[i++];
194− const name = changeList.getString(nameId);
195− const value = changeList.getString(valueId);
196− const node = top(changeList.stack);
194+ const name = interpreter.getString(nameId);
195+ const value = interpreter.getString(valueId);
196+ const node = top(interpreter.stack);
197197 node.setAttributeNS(null, name, value);
198198 return i;
199199 }
200200];
201201
202−export class ChangeList {
202+export class ChangeListInterpreter {
203203 constructor(container) {
204204 this.trampoline = null;
205205 this.container = container;