1 02/03/84  unwinder_
 2 
 3 
 4 Entry points in unwinder_:
 5    (List is generated by the help command)
 6 
 7 
 8 :Entry: unwinder_: 02/03/84  unwinder_
 9 
10 
11 Function: is used to perform a nonlocal goto on the Multics stack.  It
12 is not intended to be called by direct programming (i.e., an explicit
13 call statement in a program) but rather, by the generated code of a
14 translator.  For example, it is automatically invoked by a PL/I goto
15 statement involving a nonlocal label variable.
16 
17 
18 Syntax:
19 declare unwinder_ entry (label);
20 call unwinder_ (tag);
21 
22 
23 Arguments:
24 tag
25    is a nonlocal label variable.  (Input)
26 
27 
28 Notes: When invoked, the unwinder_ subroutine traces the Multics stack
29 backward until it finds the stack frame associated with its label
30 variable argument or until the stack is exhausted.  In each stack
31 frame it passes, it invokes the handler (if any) for the cleanup
32 condition.  When it finds the desired stack frame, it passes control
33 to the procedure associated with that frame at the location indicated
34 by the label variable argument.  If the desired stack frame cannot be
35 found or if other obscure error conditions arise (e.g., the stack is
36 not threaded correctly), the unwinder_ subroutine signals the
37 unwinder_error condition.  If the target is not on the current stack,
38 and there is a stack in a higher ring, that stack is searched after
39 the current one is unwound.