/* This is a little tricky. The iterator may allocate memory, so we
keep the callstack in a GC root and use relative offsets */
-template<typename T> void iterate_callstack_object(callstack *stack_, T &iterator)
+template<typename T> void factorvm::iterate_callstack_object(callstack *stack_, T &iterator)
{
gc_root<callstack> stack(stack_,vm);
fixnum frame_offset = untag_fixnum(stack->length) - sizeof(stack_frame);
}
}
+template<typename T> void iterate_callstack_object(callstack *stack_, T &iterator)
+{
+ return vm->iterate_callstack_object(stack_,iterator);
+}
+
}
void jit_compile_word(cell word, cell def, bool relocate);
-//typedef void (*code_heap_iterator)(code_block *compiled);
-
void iterate_code_heap(code_heap_iterator iter);
void copy_code_heap_roots();
void load_image(vm_parameters *p);
//callstack
+ template<typename T> void iterate_callstack_object(callstack *stack_, T &iterator);
void check_frame(stack_frame *frame);
callstack *allot_callstack(cell size);
stack_frame *fix_callstack_top(stack_frame *top, stack_frame *bottom);