4 static const cell context_object_count = 10;
11 static const cell stack_reserved = 1024;
15 // First 4 fields accessed directly by compiler. See basis/vm/vm.factor
17 /* Factor callstack pointers */
18 stack_frame *callstack_top;
19 stack_frame *callstack_bottom;
21 /* current datastack top pointer */
24 /* current retain stack top pointer */
27 /* C callstack pointer */
30 /* context-specific special objects, accessed by context-object and
31 set-context-object primitives */
32 cell context_objects[context_object_count];
34 segment *datastack_seg;
35 segment *retainstack_seg;
36 segment *callstack_seg;
38 context(cell datastack_size, cell retainstack_size, cell callstack_size);
41 void reset_datastack();
42 void reset_retainstack();
43 void reset_callstack();
44 void reset_context_objects();
50 return *(cell *)datastack;
53 void replace(cell tagged)
55 *(cell *)datastack = tagged;
61 datastack -= sizeof(cell);
65 void push(cell tagged)
67 datastack += sizeof(cell);
72 VM_C_API context *new_context(factor_vm *parent);
73 VM_C_API void begin_callback(factor_vm *parent);
74 VM_C_API void end_callback(factor_vm *parent);