32 lines
952 B
C++
Executable File
32 lines
952 B
C++
Executable File
namespace factor
|
|
{
|
|
|
|
inline static CELL callstack_size(CELL size)
|
|
{
|
|
return sizeof(F_CALLSTACK) + size;
|
|
}
|
|
|
|
#define FIRST_STACK_FRAME(stack) (F_STACK_FRAME *)((stack) + 1)
|
|
|
|
typedef void (*CALLSTACK_ITER)(F_STACK_FRAME *frame);
|
|
|
|
F_STACK_FRAME *fix_callstack_top(F_STACK_FRAME *top, F_STACK_FRAME *bottom);
|
|
void iterate_callstack(CELL top, CELL bottom, CALLSTACK_ITER iterator);
|
|
void iterate_callstack_object(F_CALLSTACK *stack, CALLSTACK_ITER iterator);
|
|
F_STACK_FRAME *frame_successor(F_STACK_FRAME *frame);
|
|
F_CODE_BLOCK *frame_code(F_STACK_FRAME *frame);
|
|
CELL frame_executing(F_STACK_FRAME *frame);
|
|
CELL frame_scan(F_STACK_FRAME *frame);
|
|
CELL frame_type(F_STACK_FRAME *frame);
|
|
|
|
PRIMITIVE(callstack);
|
|
PRIMITIVE(set_callstack);
|
|
PRIMITIVE(callstack_to_array);
|
|
PRIMITIVE(innermost_stack_frame_quot);
|
|
PRIMITIVE(innermost_stack_frame_scan);
|
|
PRIMITIVE(set_innermost_stack_frame_quot);
|
|
|
|
VM_ASM_API void save_callstack_bottom(F_STACK_FRAME *callstack_bottom);
|
|
|
|
}
|