NAME
src/pmc/coroutine.pmc - Coroutine PMC
DESCRIPTION
Coroutine
extends Sub
to provide a subroutine that can stop in the middle,
and start back up later at the point at which it stopped.
See the Glossary for more information.
Flags
Methods
static void print_sub_name(PARROT_INTERP, PMC *sub_pmc)
static function to print coroutine information (for tracing/debugging)
void init()
Initializes the coroutine.
PMC * clone()
Clones the coroutine.
void mark()
Marks all GC-able pmc elements as live.
void increment()
Signals the start of a yield.
void reset()
Resets the state of the coroutine,
so that the next call will start at the first yield again.
void autoreset()
Sets a coroutine to auto-resetting,
so it will never die when all yield states are exhausted.
You can use autoreset(0) to turn it off again.Use this with care,
as it might not do what you want!
opcode_t *invoke(void *next)
Swaps the "context" between the call to the coro and the yield back,
until all yields are exhausted and the coro is dead.