Executes decoded QuickJS bytecode via multi-clause function dispatch.
The interpreter pre-decodes bytecode into instruction tuples for O(1) indexed
access, then runs a tail-recursive dispatch loop with one defp run/5 clause
per opcode family.
JS value representation
- number: Elixir integer or float
- string: Elixir binary
- boolean:
true/false - null:
nil - undefined:
:undefined - object:
{:obj, reference()} function:
%QuickBEAM.VM.Function{}|{:closure, map(), %QuickBEAM.VM.Function{}}symbol:
{:symbol, desc}|{:symbol, desc, ref}- bigint:
{:bigint, integer()}
Summary
Functions
Evaluates bytecode in the interpreter.
Invoke a VM function or closure from external code.
Invokes a callback function from built-in code (e.g. Array.prototype.map).
Invokes a closure through the interpreter fallback path.
Invokes a VM function through the interpreter fallback path.
Invokes a JS function with a specific this receiver.
Resolves an awaited value for async interpreter execution.
Runs a bytecode frame — entry point for external callers.
Functions
@spec eval(QuickBEAM.VM.Function.t()) :: {:ok, term()} | {:error, term()}
Evaluates bytecode in the interpreter.
@spec eval(QuickBEAM.VM.Function.t(), [term()], map()) :: {:ok, term()} | {:error, term()}
Invoke a VM function or closure from external code.
Invokes a callback function from built-in code (e.g. Array.prototype.map).
Invokes a closure through the interpreter fallback path.
Invokes a VM function through the interpreter fallback path.
Invokes a JS function with a specific this receiver.
Resolves an awaited value for async interpreter execution.
Runs a bytecode frame — entry point for external callers.