pub enum Opcode {
Show 67 variants
PushNull,
PushBool(bool),
PushInt(i64),
PushFloat(f64),
PushStr(Arc<str>),
PushRoot,
PushCurrent,
GetField(Arc<str>),
GetIndex(i64),
GetSlice(Option<i64>, Option<i64>),
DynIndex(Arc<Program>),
OptField(Arc<str>),
Descendant(Arc<str>),
DescendAll,
InlineFilter(Arc<Program>),
Quantifier(QuantifierKind),
RootChain(Arc<[Arc<str>]>),
FilterCount(Arc<Program>),
FindFirst(Arc<Program>),
FindOne(Arc<Program>),
FilterMap {
pred: Arc<Program>,
map: Arc<Program>,
},
FilterFilter {
p1: Arc<Program>,
p2: Arc<Program>,
},
MapMap {
f1: Arc<Program>,
f2: Arc<Program>,
},
MapSum(Arc<Program>),
MapAvg(Arc<Program>),
TopN {
n: usize,
asc: bool,
},
MapFlatten(Arc<Program>),
FilterTakeWhile {
pred: Arc<Program>,
stop: Arc<Program>,
},
FilterDropWhile {
pred: Arc<Program>,
drop: Arc<Program>,
},
MapUnique(Arc<Program>),
EquiJoin {
rhs: Arc<Program>,
lhs_key: Arc<str>,
rhs_key: Arc<str>,
},
LoadIdent(Arc<str>),
Add,
Sub,
Mul,
Div,
Mod,
Eq,
Neq,
Lt,
Lte,
Gt,
Gte,
Fuzzy,
Not,
Neg,
CastOp(CastType),
AndOp(Arc<Program>),
OrOp(Arc<Program>),
CoalesceOp(Arc<Program>),
CallMethod(Arc<CompiledCall>),
CallOptMethod(Arc<CompiledCall>),
MakeObj(Arc<[CompiledObjEntry]>),
MakeArr(Arc<[Arc<Program>]>),
FString(Arc<[CompiledFSPart]>),
KindCheck {
ty: KindType,
negate: bool,
},
SetCurrent,
BindVar(Arc<str>),
StoreVar(Arc<str>),
BindObjDestructure(Arc<BindObjSpec>),
BindArrDestructure(Arc<[Arc<str>]>),
LetExpr {
name: Arc<str>,
body: Arc<Program>,
},
ListComp(Arc<CompSpec>),
DictComp(Arc<DictCompSpec>),
SetComp(Arc<CompSpec>),
GetPointer(Arc<str>),
PatchEval(Arc<Expr>),
}Variants§
PushNull
PushBool(bool)
PushInt(i64)
PushFloat(f64)
PushStr(Arc<str>)
PushRoot
PushCurrent
GetField(Arc<str>)
GetIndex(i64)
GetSlice(Option<i64>, Option<i64>)
DynIndex(Arc<Program>)
OptField(Arc<str>)
Descendant(Arc<str>)
DescendAll
InlineFilter(Arc<Program>)
Quantifier(QuantifierKind)
RootChain(Arc<[Arc<str>]>)
PushRoot + GetField* fused — resolves chain via pointer arithmetic.
FilterCount(Arc<Program>)
filter(pred) + len/count fused — counts matches without temp array.
FindFirst(Arc<Program>)
filter(pred) + First quantifier fused — early-exit on first match.
FindOne(Arc<Program>)
filter(pred) + One quantifier fused — early-exit at 2nd match (error).
FilterMap
filter(pred) + map(f) fused — single pass, no intermediate array.
FilterFilter
filter(p1) + filter(p2) fused — single pass, both predicates.
MapMap
map(f1) + map(f2) fused — single pass, composed.
MapSum(Arc<Program>)
Fused map(f).sum() — evaluates f per item, accumulates numeric sum.
MapAvg(Arc<Program>)
Fused map(f).avg() — evaluates f per item, computes mean as float.
TopN
Fused sort() + [0:n] — partial-sort smallest N using BinaryHeap.
asc=true → smallest N; asc=false → largest N.
MapFlatten(Arc<Program>)
Fused map(f).flatten() — single-pass concat of mapped arrays.
FilterTakeWhile
Fused filter(p).take_while(q) — scan while both predicates hold.
FilterDropWhile
Fused filter(p).drop_while(q) — skip leading matches of q on
p-filtered elements.
MapUnique(Arc<Program>)
Fused map(f).unique() — apply f and dedup by resulting value.
EquiJoin
Fused equi-join: TOS is lhs array; rhs program evaluates
to rhs array; join by (lhs_key, rhs_key) string field names.
Produces array of merged objects (rhs wins on collision).
LoadIdent(Arc<str>)
Add
Sub
Mul
Div
Mod
Eq
Neq
Lt
Lte
Gt
Gte
Fuzzy
Not
Neg
CastOp(CastType)
AndOp(Arc<Program>)
OrOp(Arc<Program>)
CoalesceOp(Arc<Program>)
CallMethod(Arc<CompiledCall>)
CallOptMethod(Arc<CompiledCall>)
MakeObj(Arc<[CompiledObjEntry]>)
MakeArr(Arc<[Arc<Program>]>)
FString(Arc<[CompiledFSPart]>)
KindCheck
SetCurrent
Pop TOS → env.current, then push it back (pass-through with context update).
BindVar(Arc<str>)
TOS → env var by name, TOS remains (for -> bind).
StoreVar(Arc<str>)
Pop TOS → env var (for let init).
BindObjDestructure(Arc<BindObjSpec>)
Object destructure bind: TOS obj → multiple vars.
BindArrDestructure(Arc<[Arc<str>]>)
Array destructure bind: TOS arr → multiple vars.