4 static const cell context_object_count = 10;
12 static const cell stack_reserved = 1024;
16 // First 4 fields accessed directly by compiler. See basis/vm/vm.factor
18 /* Factor callstack pointers */
19 stack_frame *callstack_top;
20 stack_frame *callstack_bottom;
22 /* current datastack top pointer */
25 /* current retain stack top pointer */
28 /* C callstack pointer */
31 segment *datastack_seg;
32 segment *retainstack_seg;
33 segment *callstack_seg;
35 /* context-specific special objects, accessed by context-object and
36 set-context-object primitives */
37 cell context_objects[context_object_count];
39 /* temporary area used by FFI code generation */
42 context(cell datastack_size, cell retainstack_size, cell callstack_size);
45 void reset_datastack();
46 void reset_retainstack();
47 void reset_callstack();
48 void reset_context_objects();
54 return *(cell *)datastack;
57 void replace(cell tagged)
59 *(cell *)datastack = tagged;
65 datastack -= sizeof(cell);
69 void push(cell tagged)
71 datastack += sizeof(cell);
76 VM_C_API context *new_context(factor_vm *parent);
77 VM_C_API void delete_context(factor_vm *parent, context *old_context);
78 VM_C_API cell begin_callback(factor_vm *parent, cell quot);
79 VM_C_API void end_callback(factor_vm *parent);