Annotation of 42BSD/ucb/lisp/franz/h/frame.h, revision 1.1.1.1

1.1       root        1: /*                                     -[Sat Jan 29 13:55:13 1983 by jkf]-
                      2:  *     frame.h                         $Locker:  $
                      3:  * non local goto frame definition
                      4:  *
                      5:  * $Header: frame.h,v 1.3 83/09/12 15:29:08 sklower Exp $
                      6:  *
                      7:  * (c) copyright 1982, Regents of the University of California
                      8:  */
                      9:  
                     10: /* classes of frames: */
                     11: #define F_PROG         1
                     12: #define F_CATCH        2
                     13: #define F_RESET        3
                     14: #define F_EVAL         4
                     15: #define F_FUNCALL      5
                     16: #define F_TO_FORT      6
                     17: #define F_TO_LISP      7
                     18: 
                     19: /* classes of things thrown up */
                     20: #define C_INITIAL      0
                     21: #define C_GO           1
                     22: #define C_RET          2
                     23: #define C_THROW        3
                     24: #define C_RESET        4
                     25: #define C_FRETURN      5
                     26: 
                     27: 
                     28: /* the evaluation frame sits on the C runtime stack.  the global variable errp
                     29:    points to the newest frame. The base of the frame points in the middle
                     30:    of the frame, but in such a way that above the frame base the contents
                     31:    are the same for all implementation, and below it there are different
                     32:    saved registers for each machine. 
                     33: */
                     34: 
                     35: struct frame 
                     36: {
                     37:     struct argent *svlbot, *svnp;
                     38:     struct nament *svbnp;
                     39:     struct frame *olderrp;
                     40:     lispval retaddr;
                     41:     long class;
                     42:     lispval larg1;     /* optional */
                     43:     lispval larg2;     /* optional */
                     44: };
                     45: 
                     46: extern struct frame *errp, *Pushframe(), *Ipushf();
                     47: 
                     48: /* stuff for IBM, RIDGE, DEC-VMS CC, maybe Bellmac-32
                     49:  *
                     50:  * The non obvious requirement is that any new function
                     51:  * requiring a Pushframe must declare 
                     52:  *
                     53:  *     pbuf pb;
                     54:  *
                     55:  * as well.
                     56:  */
                     57: 
                     58: #ifdef SPISFP
                     59: #define Pushframe(a,b,c) Ipushf(a,b,c,&pb)
                     60: #endif
                     61: 
                     62: 
                     63: typedef struct pframe
                     64: {
                     65:        long regs[16];
                     66:        struct frame f;
                     67: } pbuf;

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.