13 // The stack grows from low memory towards high memory. This is so that
14 // multiple expressions can be pushed on the stack and then accessed as an
17 // The frame area holds local variables and grows from high memory towards
18 // low memory. The frame area makes local variables visible to the garbage
30 if (stack
+ tos
>= frame
)
31 stop("stack overflow");
39 stop("stack underflow");
48 if (frame
< stack
+ tos
)
49 stop("frame overflow, circular reference?");
50 for (i
= 0; i
< n
; i
++)
51 frame
[i
] = symbol(NIL
);
58 if (frame
> stack
+ TOS
)
59 stop("frame underflow");
66 if (frame
< stack
+ tos
)
67 stop("frame overflow, circular reference?");
83 if (frame
> stack
+ TOS
- 10)
84 stop("frame underflow");
98 // Local U * is OK here because there is no functional path to the garbage collector.
110 // Local U * is OK here because there is no functional path to the garbage collector.