UNPKG

@glimmer/runtime

Version:

Minimal runtime needed to render Glimmer templates

48 lines 1.8 kB
import { Option, RuntimeHeap, RuntimeProgram, RuntimeOp } from '@glimmer/interfaces'; import VM from './append'; import { MachineRegister } from '@glimmer/vm'; export interface LowLevelRegisters { [MachineRegister.pc]: number; [MachineRegister.ra]: number; [MachineRegister.sp]: number; [MachineRegister.fp]: number; } export declare function initializeRegisters(): LowLevelRegisters; export declare function initializeRegistersWithSP(sp: number): LowLevelRegisters; export declare function initializeRegistersWithPC(pc: number): LowLevelRegisters; export interface Stack { push(value: unknown): void; get(position: number): number; pop<T>(): T; } export interface Externs { debugBefore(opcode: RuntimeOp): unknown; debugAfter(state: unknown): void; } export default class LowLevelVM { stack: Stack; heap: RuntimeHeap; program: RuntimeProgram; externs: Externs; readonly registers: LowLevelRegisters; currentOpSize: number; constructor(stack: Stack, heap: RuntimeHeap, program: RuntimeProgram, externs: Externs, registers: LowLevelRegisters); fetchRegister(register: MachineRegister): number; loadRegister(register: MachineRegister, value: number): void; setPc(pc: number): void; pushFrame(): void; popFrame(): void; pushSmallFrame(): void; popSmallFrame(): void; goto(offset: number): void; target(offset: number): number; call(handle: number): void; returnTo(offset: number): void; return(): void; nextStatement(): Option<RuntimeOp>; evaluateOuter(opcode: RuntimeOp, vm: VM): void; evaluateInner(opcode: RuntimeOp, vm: VM): void; evaluateMachine(opcode: RuntimeOp): void; evaluateSyscall(opcode: RuntimeOp, vm: VM): void; } //# sourceMappingURL=low-level.d.ts.map