From ceb85fa4be2f8d634f7b5cfa3264aebe18debb2a Mon Sep 17 00:00:00 2001 From: jberg Date: Mon, 19 Aug 2019 14:43:06 -0700 Subject: [PATCH] Add delete opcode (#869) --- modern/src/maki-interpreter/interpreter.js | 6 ++++++ modern/src/runtime/MakiObject.js | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/modern/src/maki-interpreter/interpreter.js b/modern/src/maki-interpreter/interpreter.js index af99cb6f..2a9bc4eb 100644 --- a/modern/src/maki-interpreter/interpreter.js +++ b/modern/src/maki-interpreter/interpreter.js @@ -323,6 +323,12 @@ export function* interpret(start, program, stack = []) { stack.push(klassInst); break; } + // delete + case 97: { + const aValue = popStackValue(); + aValue.js_delete(); + break; + } default: throw new Error(`Unhandled opcode ${command.opcode}`); } diff --git a/modern/src/runtime/MakiObject.js b/modern/src/runtime/MakiObject.js index 1b31d706..31f4a989 100644 --- a/modern/src/runtime/MakiObject.js +++ b/modern/src/runtime/MakiObject.js @@ -34,6 +34,11 @@ class MakiObject { this.children = this.children.filter(item => item !== child); } + js_delete() { + this.parent.js_removeChild(this); + this.parent.js_trigger("js_update"); + } + js_trigger(eventName, ...args) { this._emitter.trigger(eventName.toLowerCase(), ...args); }