parrotcode: Run Loops | |
Contents | C |
src/runops_cores.c - Run Loops
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.
PARROT_WARN_UNUSED_RESULT PARROT_CAN_RETURN_NULL opcode_t *runops_fast_core(PARROT_INTERP, NOTNULL(opcode_t *pc))
pc
until there are no more operations.PARROT_WARN_UNUSED_RESULT PARROT_CAN_RETURN_NULL opcode_t *runops_cgoto_core(PARROT_INTERP, NOTNULL(opcode_t *pc))
pc
until there are no more operations,
using the computed goto
core.goto
is not available then Parrot exits with exit code 1.PARROT_WARN_UNUSED_RESULT PARROT_CAN_RETURN_NULL static opcode_t *runops_trace_core(PARROT_INTERP, NOTNULL(opcode_t *pc))
PARROT_WARN_UNUSED_RESULT PARROT_CAN_RETURN_NULL opcode_t *runops_slow_core(PARROT_INTERP, NOTNULL(opcode_t *pc))
pc
until there are no more operations,
with tracing and bounds checking enabled.PARROT_WARN_UNUSED_RESULT PARROT_CAN_RETURN_NULL opcode_t *runops_gc_debug_core(PARROT_INTERP, NOTNULL(opcode_t *pc))
pc
until there are no more operations,
performing a full GC run before each op.
This is very slow,
but it's also a very quick way to find GC problems.PARROT_WARN_UNUSED_RESULT PARROT_CAN_RETURN_NULL opcode_t *runops_profile_core(PARROT_INTERP, NOTNULL(opcode_t *pc))
pc
until there are no more operations,
with tracing,
bounds checking and profiling enabled.*/
/* * Local variables: * c-file-style: "parrot" * End: * vim: expandtab shiftwidth=4: */
|