2019-09-19 00:18:36 +02:00
|
|
|
use crate::ast::InterfaceType;
|
|
|
|
|
|
|
|
pub mod interpreter;
|
|
|
|
mod stack;
|
2019-09-20 00:06:15 +02:00
|
|
|
pub mod wasm;
|
2019-09-19 00:18:36 +02:00
|
|
|
|
|
|
|
#[derive(PartialEq, Debug)]
|
|
|
|
pub enum Instruction<'input> {
|
|
|
|
ArgumentGet(u64),
|
2019-09-25 21:53:23 +02:00
|
|
|
Call(usize),
|
2019-09-19 00:18:36 +02:00
|
|
|
CallExport(&'input str),
|
|
|
|
ReadUtf8,
|
|
|
|
WriteUtf8(&'input str),
|
|
|
|
AsWasm(InterfaceType),
|
|
|
|
AsInterface(InterfaceType),
|
|
|
|
TableRefAdd,
|
|
|
|
TableRefGet,
|
|
|
|
CallMethod(u64),
|
|
|
|
MakeRecord(InterfaceType),
|
|
|
|
GetField(InterfaceType, u64),
|
|
|
|
Const(InterfaceType, u64),
|
|
|
|
FoldSeq(u64),
|
|
|
|
Add(InterfaceType),
|
|
|
|
MemToSeq(InterfaceType, &'input str),
|
|
|
|
Load(InterfaceType, &'input str),
|
|
|
|
SeqNew(InterfaceType),
|
|
|
|
ListPush,
|
|
|
|
RepeatWhile(u64, u64),
|
|
|
|
}
|