| 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: */
|
|
|