Dev checkpoint

db4
Phil Dawes 2009-08-17 21:37:13 +01:00
parent efa974f025
commit 8fa607e9a9
9 changed files with 17 additions and 28 deletions

View File

@ -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 */

View File

@ -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);

View File

@ -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);
} }
} }

View File

@ -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);

View File

@ -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)

View File

@ -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()

View File

@ -3,7 +3,6 @@
namespace factor namespace factor
{ {
bool profiling_p;
void factorvm::init_profiler() void factorvm::init_profiler()
{ {

1
vm/profiler.hpp Normal file → Executable file
View File

@ -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);

View File

@ -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);