diff --git a/squeak.js b/squeak.js index fec803bf..f4175a67 100644 --- a/squeak.js +++ b/squeak.js @@ -114,7 +114,7 @@ "version", { // system attributes vmVersion: "SqueakJS 1.1.2", - vmDate: "2023-11-24", // Maybe replace at build time? + vmDate: "2023-11-27", // Maybe replace at build time? vmBuild: "unknown", // or replace at runtime by last-modified? vmPath: "unknown", // Replace at runtime vmFile: "vm.js", @@ -7007,6 +7007,7 @@ oldProc.dirty = true; this.vm.newActiveContext(newProc.pointers[Squeak.Proc_suspendedContext]); newProc.pointers[Squeak.Proc_suspendedContext] = this.vm.nilObj; + if (!this.oldPrims) newProc.pointers[Squeak.Proc_myList] = this.vm.nilObj; this.vm.reclaimableContextCount = 0; if (this.vm.breakOnContextChanged) { this.vm.breakOnContextChanged = false; @@ -7070,7 +7071,10 @@ } else { var temp = first; while (true) { - if (temp.isNil) return this.success = false; + if (temp.isNil) { + if (this.oldPrims) this.success = false; + return; + } next = temp.pointers[Squeak.Link_nextLink]; if (next === process) break; temp = next; @@ -54753,9 +54757,7 @@ function recordKeyboardEvent(key, timestamp, display) { if (!display.vm) return; var code = (display.buttons >> 3) << 8 | key; - if (code === display.vm.interruptKeycode) { - display.vm.interruptPending = true; - } else if (display.eventQueue) { + if (display.eventQueue) { display.eventQueue.push([ Squeak.EventTypeKeyboard, timestamp, // converted to Squeak time in makeSqueakEvent() @@ -54770,6 +54772,8 @@ // and polling primitives. To make those work, keep the // last key event display.keys[0] = code; + } else if (code === display.vm.interruptKeycode) { + display.vm.interruptPending = true; } else { // no event queue, queue keys the old-fashioned way display.keys.push(code);