}
}
-void copy_literal_references(code_block *compiled)
+void copy_literal_references(code_block *compiled, factorvm *myvm)
{
- return vm->copy_literal_references(compiled);
+ return myvm->copy_literal_references(compiled);
}
/* Compute an address to store at a relocation */
}
}
-void update_word_references(code_block *compiled)
+void update_word_references(code_block *compiled, factorvm *myvm)
{
- return vm->update_word_references(compiled);
+ return myvm->update_word_references(compiled);
}
void factorvm::update_literal_and_word_references(code_block *compiled)
flush_icache_for(compiled);
}
-void relocate_code_block(code_block *compiled)
+void relocate_code_block(code_block *compiled, factorvm *myvm)
{
- return vm->relocate_code_block(compiled);
+ return myvm->relocate_code_block(compiled);
}
/* Fixup labels. This is done at compile time, not image load time */
void flush_icache_for(code_block *compiled);
+struct factorvm;
+
typedef void (*relocation_iterator)(relocation_entry rel, cell index, code_block *compiled);
void iterate_relocations(code_block *compiled, relocation_iterator iter);
void store_address_in_code_block(cell klass, cell offset, fixnum absolute_value);
-void relocate_code_block(code_block *compiled);
+void relocate_code_block(code_block *compiled, factorvm *myvm);
void update_literal_references(code_block *compiled);
-void copy_literal_references(code_block *compiled);
+void copy_literal_references(code_block *compiled, factorvm *myvm);
-void update_word_references(code_block *compiled);
+void update_word_references(code_block *compiled, factorvm *myvm);
void update_literal_and_word_references(code_block *compiled);
while(scan)
{
if(scan->status != B_FREE)
- iter((code_block *)scan);
+ iter((code_block *)scan,this);
scan = next_block(&code,scan);
}
}
void jit_compile_word(cell word, cell def, bool relocate);
-typedef void (*code_heap_iterator)(code_block *compiled);
+struct factorvm;
+typedef void (*code_heap_iterator)(code_block *compiled,factorvm *myvm);
void iterate_code_heap(code_heap_iterator iter);
context *next;
};
-//extern cell ds_size, rs_size;
-
#define ds_bot (stack_chain->datastack_region->start)
#define ds_top (stack_chain->datastack_region->end)
#define rs_bot (stack_chain->retainstack_region->start)
relocate_code_block(compiled);
}
-void fixup_code_block(code_block *compiled)
+void fixup_code_block(code_block *compiled,factorvm *myvm)
{
- return vm->fixup_code_block(compiled);
+ return myvm->fixup_code_block(compiled);
}
void factorvm::relocate_code()
namespace factor
{
-bool profiling_p;
void factorvm::init_profiler()
{
namespace factor
{
-extern bool profiling_p;
void init_profiler();
code_block *compile_profiling_stub(cell word);
PRIMITIVE(profiling);
namespace factor
{
-struct heap;
-struct data_heap;
-struct data;
-struct zone;
-struct vm_parameters;
-struct image_header;
-
-typedef u8 card;
-typedef u8 card_deck;
-
-
struct factorvm {
// contexts
inline void vmprim_clone();
// profiler
+ bool profiling_p;
void init_profiler();
code_block *compile_profiling_stub(cell word_);
void set_profiling(bool profiling);