@@ -11,17 +11,17 @@ function string(mem, pointer, length) {
12const OP_TABLE = [
12const OP_TABLE = [
14− function setText(changeList, mem8, mem32, i) {
14+ function setText(interpreter, mem8, mem32, i) {
15 const pointer = mem32[i++];
15 const pointer = mem32[i++];
16 const length = mem32[i++];
16 const length = mem32[i++];
17 const str = string(mem8, pointer, length);
17 const str = string(mem8, pointer, length);
18− top(changeList.stack).textContent = str;
18+ top(interpreter.stack).textContent = str;
23− function removeSelfAndNextSiblings(changeList, mem8, mem32, i) {
23+ function removeSelfAndNextSiblings(interpreter, mem8, mem32, i) {
24− const node = changeList.stack.pop();
24+ const node = interpreter.stack.pop();
25 let sibling = node.nextSibling;
25 let sibling = node.nextSibling;
26 while (sibling) {
26 while (sibling) {
27 const temp = sibling.nextSibling;
27 const temp = sibling.nextSibling;
@@ -33,21 +33,21 @@ const OP_TABLE = [
36− function replaceWith(changeList, mem8, mem32, i) {
36+ function replaceWith(interpreter, mem8, mem32, i) {
37− const newNode = changeList.stack.pop();
37+ const newNode = interpreter.stack.pop();
38− const oldNode = changeList.stack.pop();
38+ const oldNode = interpreter.stack.pop();
39 oldNode.replaceWith(newNode);
39 oldNode.replaceWith(newNode);
40− changeList.stack.push(newNode);
40+ interpreter.stack.push(newNode);
45− function setAttribute(changeList, mem8, mem32, i) {
45+ function setAttribute(interpreter, mem8, mem32, i) {
46 const nameId = mem32[i++];
46 const nameId = mem32[i++];
47 const valueId = mem32[i++];
47 const valueId = mem32[i++];
48− const name = changeList.getString(nameId);
48+ const name = interpreter.getString(nameId);
49− const value = changeList.getString(valueId);
49+ const value = interpreter.getString(valueId);
50− const node = top(changeList.stack);
50+ const node = top(interpreter.stack);
51 node.setAttribute(name, value);
51 node.setAttribute(name, value);
53 // Some attributes are "volatile" and don't work through `setAttribute`.
53 // Some attributes are "volatile" and don't work through `setAttribute`.
@@ -65,10 +65,10 @@ const OP_TABLE = [
68− function removeAttribute(changeList, mem8, mem32, i) {
68+ function removeAttribute(interpreter, mem8, mem32, i) {
69 const nameId = mem32[i++];
69 const nameId = mem32[i++];
70− const name = changeList.getString(nameId);
70+ const name = interpreter.getString(nameId);
71− const node = top(changeList.stack);
71+ const node = top(interpreter.stack);
72 node.removeAttribute(name);
72 node.removeAttribute(name);
74 // Some attributes are "volatile" and don't work through `removeAttribute`.
74 // Some attributes are "volatile" and don't work through `removeAttribute`.
@@ -86,120 +86,120 @@ const OP_TABLE = [
89− function pushFirstChild(changeList, mem8, mem32, i) {
89+ function pushFirstChild(interpreter, mem8, mem32, i) {
90− changeList.stack.push(top(changeList.stack).firstChild);
90+ interpreter.stack.push(top(interpreter.stack).firstChild);
95− function popPushNextSibling(changeList, mem8, mem32, i) {
95+ function popPushNextSibling(interpreter, mem8, mem32, i) {
96− const node = changeList.stack.pop();
96+ const node = interpreter.stack.pop();
97− changeList.stack.push(node.nextSibling);
97+ interpreter.stack.push(node.nextSibling);
102− function pop(changeList, mem8, mem32, i) {
102+ function pop(interpreter, mem8, mem32, i) {
103− changeList.stack.pop();
103+ interpreter.stack.pop();
104 return i;
104 return i;
108− function appendChild(changeList, mem8, mem32, i) {
108+ function appendChild(interpreter, mem8, mem32, i) {
109− const child = changeList.stack.pop();
109+ const child = interpreter.stack.pop();
110− top(changeList.stack).appendChild(child);
110+ top(interpreter.stack).appendChild(child);
111 return i;
111 return i;
115− function createTextNode(changeList, mem8, mem32, i) {
115+ function createTextNode(interpreter, mem8, mem32, i) {
116 const pointer = mem32[i++];
116 const pointer = mem32[i++];
117 const length = mem32[i++];
117 const length = mem32[i++];
118 const text = string(mem8, pointer, length);
118 const text = string(mem8, pointer, length);
119− changeList.stack.push(document.createTextNode(text));
119+ interpreter.stack.push(document.createTextNode(text));
120 return i;
120 return i;
124− function createElement(changeList, mem8, mem32, i) {
124+ function createElement(interpreter, mem8, mem32, i) {
125 const tagNameId = mem32[i++];
125 const tagNameId = mem32[i++];
126− const tagName = changeList.getString(tagNameId);
126+ const tagName = interpreter.getString(tagNameId);
127− changeList.stack.push(document.createElement(tagName));
127+ interpreter.stack.push(document.createElement(tagName));
128 return i;
128 return i;
132− function newEventListener(changeList, mem8, mem32, i) {
132+ function newEventListener(interpreter, mem8, mem32, i) {
133 const eventId = mem32[i++];
133 const eventId = mem32[i++];
134− const eventType = changeList.getString(eventId);
134+ const eventType = interpreter.getString(eventId);
135 const a = mem32[i++];
135 const a = mem32[i++];
136 const b = mem32[i++];
136 const b = mem32[i++];
137− const el = top(changeList.stack);
137+ const el = top(interpreter.stack);
138− el.addEventListener(eventType, changeList.eventHandler);
138+ el.addEventListener(eventType, interpreter.eventHandler);
139 el[`dodrio-a-${eventType}`] = a;
139 el[`dodrio-a-${eventType}`] = a;
140 el[`dodrio-b-${eventType}`] = b;
140 el[`dodrio-b-${eventType}`] = b;
141 return i;
141 return i;
145− function updateEventListener(changeList, mem8, mem32, i) {
145+ function updateEventListener(interpreter, mem8, mem32, i) {
146 const eventId = mem32[i++];
146 const eventId = mem32[i++];
147− const eventType = changeList.getString(eventId);
147+ const eventType = interpreter.getString(eventId);
148− const el = top(changeList.stack);
148+ const el = top(interpreter.stack);
149 el[`dodrio-a-${eventType}`] = mem32[i++];
149 el[`dodrio-a-${eventType}`] = mem32[i++];
150 el[`dodrio-b-${eventType}`] = mem32[i++];
150 el[`dodrio-b-${eventType}`] = mem32[i++];
151 return i;
151 return i;
155− function removeEventListener(changeList, mem8, mem32, i) {
155+ function removeEventListener(interpreter, mem8, mem32, i) {
156 const eventId = mem32[i++];
156 const eventId = mem32[i++];
157− const eventType = changeList.getString(eventId);
157+ const eventType = interpreter.getString(eventId);
158− const el = top(changeList.stack);
158+ const el = top(interpreter.stack);
159− el.removeEventListener(eventType, changeList.eventHandler);
159+ el.removeEventListener(eventType, interpreter.eventHandler);
160 return i;
160 return i;
164− function addString(changeList, mem8, mem32, i) {
164+ function addString(interpreter, mem8, mem32, i) {
165 const pointer = mem32[i++];
165 const pointer = mem32[i++];
166 const length = mem32[i++];
166 const length = mem32[i++];
167 const id = mem32[i++];
167 const id = mem32[i++];
168 const str = string(mem8, pointer, length);
168 const str = string(mem8, pointer, length);
169− changeList.addString(str, id);
169+ interpreter.addString(str, id);
170 return i;
170 return i;
174− function dropString(changeList, mem8, mem32, i) {
174+ function dropString(interpreter, mem8, mem32, i) {
175 const id = mem32[i++];
175 const id = mem32[i++];
176− changeList.dropString(id);
176+ interpreter.dropString(id);
177 return i;
177 return i;
181− function createElementNS(changeList, mem8, mem32, i) {
181+ function createElementNS(interpreter, mem8, mem32, i) {
182 const tagNameId = mem32[i++];
182 const tagNameId = mem32[i++];
183− const tagName = changeList.getString(tagNameId);
183+ const tagName = interpreter.getString(tagNameId);
184 const nsId = mem32[i++];
184 const nsId = mem32[i++];
185− const ns = changeList.getString(nsId);
185+ const ns = interpreter.getString(nsId);
186− changeList.stack.push(document.createElementNS(ns, tagName));
186+ interpreter.stack.push(document.createElementNS(ns, tagName));
187 return i;
187 return i;
191− function setAttributeNS(changeList, mem8, mem32, i) {
191+ function setAttributeNS(interpreter, mem8, mem32, i) {
192 const nameId = mem32[i++];
192 const nameId = mem32[i++];
193 const valueId = mem32[i++];
193 const valueId = mem32[i++];
194− const name = changeList.getString(nameId);
194+ const name = interpreter.getString(nameId);
195− const value = changeList.getString(valueId);
195+ const value = interpreter.getString(valueId);
196− const node = top(changeList.stack);
196+ const node = top(interpreter.stack);
197 node.setAttributeNS(null, name, value);
197 node.setAttributeNS(null, name, value);
198 return i;
198 return i;
202−export class ChangeList {
202+export class ChangeListInterpreter {
203 constructor(container) {
203 constructor(container) {
204 this.trampoline = null;
204 this.trampoline = null;
205 this.container = container;
205 this.container = container;