Dev checkpoint
parent
efa974f025
commit
8fa607e9a9
|
@ -397,9 +397,9 @@ void factorvm::copy_literal_references(code_block *compiled)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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 */
|
/* Compute an address to store at a relocation */
|
||||||
|
@ -456,9 +456,9 @@ void factorvm::update_word_references(code_block *compiled)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
void factorvm::update_literal_and_word_references(code_block *compiled)
|
||||||
|
@ -574,9 +574,9 @@ void factorvm::relocate_code_block(code_block *compiled)
|
||||||
flush_icache_for(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 */
|
/* Fixup labels. This is done at compile time, not image load time */
|
||||||
|
|
|
@ -62,19 +62,21 @@ typedef u32 relocation_entry;
|
||||||
|
|
||||||
void flush_icache_for(code_block *compiled);
|
void flush_icache_for(code_block *compiled);
|
||||||
|
|
||||||
|
struct factorvm;
|
||||||
|
|
||||||
typedef void (*relocation_iterator)(relocation_entry rel, cell index, code_block *compiled);
|
typedef void (*relocation_iterator)(relocation_entry rel, cell index, code_block *compiled);
|
||||||
|
|
||||||
void iterate_relocations(code_block *compiled, relocation_iterator iter);
|
void iterate_relocations(code_block *compiled, relocation_iterator iter);
|
||||||
|
|
||||||
void store_address_in_code_block(cell klass, cell offset, fixnum absolute_value);
|
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 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);
|
void update_literal_and_word_references(code_block *compiled);
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ void factorvm::iterate_code_heap(code_heap_iterator iter)
|
||||||
while(scan)
|
while(scan)
|
||||||
{
|
{
|
||||||
if(scan->status != B_FREE)
|
if(scan->status != B_FREE)
|
||||||
iter((code_block *)scan);
|
iter((code_block *)scan,this);
|
||||||
scan = next_block(&code,scan);
|
scan = next_block(&code,scan);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,8 @@ bool in_code_heap_p(cell ptr);
|
||||||
|
|
||||||
void jit_compile_word(cell word, cell def, bool relocate);
|
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);
|
void iterate_code_heap(code_heap_iterator iter);
|
||||||
|
|
||||||
|
|
|
@ -36,8 +36,6 @@ struct context {
|
||||||
context *next;
|
context *next;
|
||||||
};
|
};
|
||||||
|
|
||||||
//extern cell ds_size, rs_size;
|
|
||||||
|
|
||||||
#define ds_bot (stack_chain->datastack_region->start)
|
#define ds_bot (stack_chain->datastack_region->start)
|
||||||
#define ds_top (stack_chain->datastack_region->end)
|
#define ds_top (stack_chain->datastack_region->end)
|
||||||
#define rs_bot (stack_chain->retainstack_region->start)
|
#define rs_bot (stack_chain->retainstack_region->start)
|
||||||
|
|
|
@ -363,9 +363,9 @@ void factorvm::fixup_code_block(code_block *compiled)
|
||||||
relocate_code_block(compiled);
|
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()
|
void factorvm::relocate_code()
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
namespace factor
|
namespace factor
|
||||||
{
|
{
|
||||||
|
|
||||||
bool profiling_p;
|
|
||||||
|
|
||||||
void factorvm::init_profiler()
|
void factorvm::init_profiler()
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
namespace factor
|
namespace factor
|
||||||
{
|
{
|
||||||
|
|
||||||
extern bool profiling_p;
|
|
||||||
void init_profiler();
|
void init_profiler();
|
||||||
code_block *compile_profiling_stub(cell word);
|
code_block *compile_profiling_stub(cell word);
|
||||||
PRIMITIVE(profiling);
|
PRIMITIVE(profiling);
|
||||||
|
|
12
vm/vm.hpp
12
vm/vm.hpp
|
@ -1,17 +1,6 @@
|
||||||
namespace factor
|
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 {
|
struct factorvm {
|
||||||
|
|
||||||
// contexts
|
// contexts
|
||||||
|
@ -47,6 +36,7 @@ struct factorvm {
|
||||||
inline void vmprim_clone();
|
inline void vmprim_clone();
|
||||||
|
|
||||||
// profiler
|
// profiler
|
||||||
|
bool profiling_p;
|
||||||
void init_profiler();
|
void init_profiler();
|
||||||
code_block *compile_profiling_stub(cell word_);
|
code_block *compile_profiling_stub(cell word_);
|
||||||
void set_profiling(bool profiling);
|
void set_profiling(bool profiling);
|
||||||
|
|
Loading…
Reference in New Issue