NAME ^

src/runops_cores.c - Run Loops

DESCRIPTION ^

This file implements the various run loops for the interpreter. A slow one with bounds checking, tracing and (optional) profiling, and a fast one without. There's also one which uses computed goto, which enables the faster dispatch of operations.

Functions ^

opcode_t *runops_fast_core(Interp *interpreter, opcode_t *pc)

Runs the Parrot operations starting at pc until there are no more operations.

No bounds checking, profiling or tracing is performed.

opcode_t *runops_cgoto_core(Interp *interpreter, opcode_t *pc)

Runs the Parrot operations starting at pc until there are no more operations, using the computed goto core.

No bounds checking, profiling or tracing is performed.

If computed goto is not available then Parrot exits with exit code 1.

opcode_t *runops_slow_core(Interp *interpreter, opcode_t *pc)

Runs the Parrot operations starting at pc until there are no more operations, with tracing and bounds checking enabled.

Note that using an extern interpreter for tracing is currently broken because Parrot_destroy() fails to cleanup of ctx correctly.

opcode_t *runops_profile_core(Interp *interpreter, opcode_t *pc)

Runs the Parrot operations starting at pc until there are no more operations, with tracing, bounds checking and profiling enabled.

SEE ALSO ^

include/parrot/runops_cores.h.


parrot