]> gitweb.factorcode.org Git - factor.git/blob - native/stack.h
some progress towards self hosting
[factor.git] / native / stack.h
1 #define UNDERFLOW_CHECKING
2
3 #define UNDERFLOW(stack,bot) ((stack) < UNTAG(bot) + sizeof(ARRAY))
4 #define OVERFLOW(stack,bot) ((stack) >= UNTAG(bot) + object_size(bot))
5
6 INLINE void check_stacks(void)
7 {
8
9 #ifdef UNDERFLOW_CHECKING
10         if(OVERFLOW(env.ds,env.ds_bot))
11                 general_error(ERROR_OVERFLOW,F);
12         if(OVERFLOW(env.cs,env.cs_bot))
13                 general_error(ERROR_OVERFLOW,F);
14 #endif
15
16 }
17
18 void reset_datastack(void);
19 void reset_callstack(void);
20
21 void primitive_drop(void);
22 void primitive_dup(void);
23 void primitive_swap(void);
24 void primitive_over(void);
25 void primitive_pick(void);
26 void primitive_nip(void);
27 void primitive_tuck(void);
28 void primitive_rot(void);
29 void primitive_to_r(void);
30 void primitive_from_r(void);
31 VECTOR* stack_to_vector(CELL top, CELL bottom);
32 void primitive_datastack(void);
33 void primitive_callstack(void);
34 CELL vector_to_stack(VECTOR* vector, CELL bottom);
35 void primitive_set_datastack(void);
36 void primitive_set_callstack(void);