Invocation


Overview

Invocation is an operation which allows a locus to change its address space. Since a locus' address space is derived from its host container, invocation changes the address space of a locus by setting a new host container. The sole task of a locus is to execute code. Invocation stops a locus from executing code in one address space and causes it to continue execution in another address space derived from the new host container. Within the new address space, execution is resumed at an address associated with the new host container, known as the invocation point.

Invocation provides the ability to pass data from one address space to another. This is made possible in two ways. First, data stored in certain CPU registers is preserved during an invocation, providing a convenient and extremely low cost way to move data. Second, it is possible to specify a contiguous region in the source address space whose data is to be made available within the target address space. These methods permit both small and large quantities of data to be passed between address spaces.

A final feature of invocation is known as nesting. When a locus executes within an address space, that locus is said to be invoking that address space. Nesting allows a locus to invoke another address space and subsequently resume execution in the orignal address space in a manner analogous to procedure call. This is known as returning from an invocation. For symmetry, it is also possible to pass data when returning from an invocation.

See Also

Containers

Loci