diff --git a/packages/@glimmer/runtime/lib/vm/low-level.ts b/packages/@glimmer/runtime/lib/vm/low-level.ts index a817f25548a..9a6add0eb6c 100644 --- a/packages/@glimmer/runtime/lib/vm/low-level.ts +++ b/packages/@glimmer/runtime/lib/vm/low-level.ts @@ -23,23 +23,7 @@ import type { VM } from './append'; import '../bootstrap'; import { APPEND_OPCODES } from '../opcodes'; -export type LowLevelRegisters = [$pc: number, $ra: number, $sp: number, $fp: number]; - -export function initializeRegisters(): LowLevelRegisters { - return [0, -1, 0, 0]; -} - -export function restoreRegisters(pc: number, sp: number): LowLevelRegisters { - return [pc, -1, sp, 0]; -} - -export function initializeRegistersWithSP(sp: number): LowLevelRegisters { - return [0, -1, sp, 0]; -} - -export function initializeRegistersWithPC(pc: number): LowLevelRegisters { - return [pc, -1, 0, 0]; -} +export type LowLevelRegisters = [$pc: number, $ra: number, $fp: number, $sp: number]; export interface VmStack { readonly registers: LowLevelRegisters; diff --git a/packages/@glimmer/runtime/lib/vm/stack.ts b/packages/@glimmer/runtime/lib/vm/stack.ts index 9d736c28a64..cf88e2c309e 100644 --- a/packages/@glimmer/runtime/lib/vm/stack.ts +++ b/packages/@glimmer/runtime/lib/vm/stack.ts @@ -1,11 +1,9 @@ import assert from '@glimmer/debug-util/lib/assert'; import { LOCAL_DEBUG } from '@glimmer/local-debug-flags'; -import { $fp, $pc, $sp } from '@glimmer/vm/lib/registers'; +import { $fp, $sp } from '@glimmer/vm/lib/registers'; import type { LowLevelRegisters } from './low-level'; -import { initializeRegistersWithSP } from './low-level'; - export interface EvaluationStack { readonly registers: LowLevelRegisters; @@ -25,15 +23,10 @@ export interface EvaluationStack { export default class EvaluationStackImpl implements EvaluationStack { static restore(snapshot: unknown[], pc: number): EvaluationStackImpl { - const stack = new this(snapshot.slice(), initializeRegistersWithSP(snapshot.length - 1)); - assert(typeof pc === 'number', 'pc is a number'); - stack.registers[$pc] = pc; - stack.registers[$sp] = snapshot.length - 1; - stack.registers[$fp] = -1; - - return stack; + // [$pc, $ra, $fp, $sp] + return new this(snapshot.slice(), [pc, -1, -1, snapshot.length - 1]); } readonly registers: LowLevelRegisters; @@ -100,12 +93,4 @@ export default class EvaluationStackImpl implements EvaluationStack { } declare snapshot?: (this: EvaluationStackImpl) => unknown[]; - - static { - if (LOCAL_DEBUG) { - EvaluationStackImpl.prototype.snapshot = function () { - return this.stack.slice(this.registers[$fp], this.registers[$sp] + 1); - }; - } - } }