NAME

src/sub.c - Subroutines

DESCRIPTION

Subroutines, continuations, co-routines and other fun stuff...

Functions

void mark_context_start
Indicate that a new round of context marking is about to take place.
void mark_context
Marks the context *ctx.
Parrot_sub *new_sub
Returns a new Parrot_sub.
Parrot_sub *new_closure
Returns a new Parrot_sub with its own sctatchpad.XXX: Need to document semantics in detail.
Parrot_cont *new_continuation
Returns a new Parrot_cont to the context of to with its own copy of the current interpreter context. If to is NULL, then the to_ctx is set to the current context.
Parrot_cont *new_ret_continuation
Returns a new Parrot_cont pointing to the current context.
Parrot_coro *new_coroutine
Returns a new Parrot_coro.XXX: Need to document semantics in detail.
PMC *new_ret_continuation_pmc
Returns a new RetContinuation PMC. Uses one from the cache, if possible; otherwise, creates a new one.
void invalidate_retc_context
Make true Continuations from all RetContinuations up the call chain.
STRING *Parrot_full_sub_name
Return namespace, name, and location of subroutine.
int Parrot_Context_get_info
Takes pointers to a context and its information table. Populates the table and returns 0 or 1. XXX needs explanation Used by Parrot_Context_infostr.
STRING *Parrot_Context_infostr
Formats context information for display. Takes a context pointer and returns a pointer to the text. Used in debug.c and warnings.c
PMC *Parrot_find_pad
Locate the LexPad containing the given name. Return NULL on failure.
void Parrot_capture_lex
Capture the current lexical environment of a sub.
PMC *parrot_new_closure
Used where? XXXCreates a new closure, saving the context information. Takes a pointer to a subroutine.Returns a pointer to the closure, (or throws exceptions if invalid).
void Parrot_continuation_check
Verifies that the provided continuation is sane.
void Parrot_continuation_rewind_environment
Restores the appropriate context for the continuation.
Parrot_sub *Parrot_get_sub_pmc_from_subclass
Gets a Parrot_sub structure from something that isn't a Sub PMC, but rather a subclass.

SEE ALSO

include/parrot/sub.h.

HISTORY

Initial version by Melvin on 2002/06/6.