]> gitweb.factorcode.org Git - factor.git/blob - vm/callstack.h
Merge branch 'master' into experimental
[factor.git] / vm / callstack.h
1 F_FASTCALL void save_callstack_bottom(F_STACK_FRAME *callstack_bottom);
2
3 #define FIRST_STACK_FRAME(stack) (F_STACK_FRAME *)((stack) + 1)
4
5 typedef void (*CALLSTACK_ITER)(F_STACK_FRAME *frame);
6
7 F_STACK_FRAME *fix_callstack_top(F_STACK_FRAME *top, F_STACK_FRAME *bottom);
8 void iterate_callstack(CELL top, CELL bottom, CALLSTACK_ITER iterator);
9 void iterate_callstack_object(F_CALLSTACK *stack, CALLSTACK_ITER iterator);
10 F_STACK_FRAME *frame_successor(F_STACK_FRAME *frame);
11 F_CODE_BLOCK *frame_code(F_STACK_FRAME *frame);
12 CELL frame_executing(F_STACK_FRAME *frame);
13 CELL frame_scan(F_STACK_FRAME *frame);
14 CELL frame_type(F_STACK_FRAME *frame);
15
16 void primitive_callstack(void);
17 void primitive_set_datastack(void);
18 void primitive_set_retainstack(void);
19 void primitive_set_callstack(void);
20 void primitive_callstack_to_array(void);
21 void primitive_innermost_stack_frame_quot(void);
22 void primitive_innermost_stack_frame_scan(void);
23 void primitive_set_innermost_stack_frame_quot(void);