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 context(cell datastack_size, cell retainstack_size, cell callstack_size);
42 void reset_datastack();
43 void reset_retainstack();
44 void reset_callstack();
45 void reset_context_objects();
51 return *(cell *)datastack;
54 void replace(cell tagged)
56 *(cell *)datastack = tagged;
62 datastack -= sizeof(cell);
66 void push(cell tagged)
68 datastack += sizeof(cell);
73 VM_C_API context *new_context(factor_vm *parent);
74 VM_C_API void delete_context(factor_vm *parent, context *old_context);
75 VM_C_API cell begin_callback(factor_vm *parent, cell quot);
76 VM_C_API void end_callback(factor_vm *parent);