new_heap(&code,size);
}
-void init_code_heap(cell size)
-{
- return vm->init_code_heap(size);
-}
bool factorvm::in_code_heap_p(cell ptr)
{
if(word->pic_tail_def != F) jit_compile(word->pic_tail_def,relocate);
}
-void jit_compile_word(cell word_, cell def_, bool relocate)
-{
- return vm->jit_compile_word(word_,def_,relocate);
-}
/* Apply a function to every code block */
void factorvm::iterate_code_heap(code_heap_iterator iter)
}
}
-void iterate_code_heap(code_heap_iterator iter)
-{
- return vm->iterate_code_heap(iter);
-}
/* Copy literals referenced from all code blocks to newspace. Only for
aging and nursery collections */
iterate_code_heap(factor::copy_literal_references);
}
-void copy_code_heap_roots()
-{
- return vm->copy_code_heap_roots();
-}
/* Update pointers to words referenced from all code blocks. Only after
defining a new word. */
iterate_code_heap(factor::update_word_references);
}
-void update_code_heap_words()
-{
- return vm->update_code_heap_words();
-}
inline void factorvm::vmprim_modify_code_heap()
{
return (code_block *)forwarding[compiled];
}
-code_block *forward_xt(code_block *compiled)
-{
- return vm->forward_xt(compiled);
-}
void factorvm::forward_frame_xt(stack_frame *frame)
{
end_scan();
}
-void forward_object_xts()
-{
- return vm->forward_object_xts();
-}
/* Set the XT fields now that the heap has been compacted */
void factorvm::fixup_object_xts()
end_scan();
}
-void fixup_object_xts()
-{
- return vm->fixup_object_xts();
-}
/* Move all free space to the end of the code heap. This is not very efficient,
since it makes several passes over the code and data heaps, but we only ever
build_free_list(&code,size);
}
-void compact_code_heap()
-{
- return vm->compact_code_heap();
-}
-
}
namespace factor
{
-
-void init_code_heap(cell size);
-
-bool in_code_heap_p(cell ptr);
-
-void jit_compile_word(cell word, cell def, bool relocate);
+bool in_code_heap_p(cell ptr); // Used by platform specific code
struct factorvm;
typedef void (*code_heap_iterator)(code_block *compiled,factorvm *myvm);
-void iterate_code_heap(code_heap_iterator iter);
-
-void copy_code_heap_roots();
-
PRIMITIVE(modify_code_heap);
-
PRIMITIVE(code_room);
-void compact_code_heap();
-
-inline static void check_code_pointer(cell ptr)
-{
-#ifdef FACTOR_DEBUG
- assert(in_code_heap_p(ptr));
-#endif
-}
-
}