diff --git a/vm/code_block.cpp b/vm/code_block.cpp index d5aa7581c2..0c95fcc424 100755 --- a/vm/code_block.cpp +++ b/vm/code_block.cpp @@ -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 */ @@ -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) @@ -574,9 +574,9 @@ void factorvm::relocate_code_block(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 */ diff --git a/vm/code_block.hpp b/vm/code_block.hpp index 3497ff33ba..67c1e837f4 100644 --- a/vm/code_block.hpp +++ b/vm/code_block.hpp @@ -62,19 +62,21 @@ typedef u32 relocation_entry; 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); diff --git a/vm/code_heap.cpp b/vm/code_heap.cpp index 3d5d2c955a..9399c9ae70 100755 --- a/vm/code_heap.cpp +++ b/vm/code_heap.cpp @@ -51,7 +51,7 @@ void factorvm::iterate_code_heap(code_heap_iterator iter) while(scan) { if(scan->status != B_FREE) - iter((code_block *)scan); + iter((code_block *)scan,this); scan = next_block(&code,scan); } } diff --git a/vm/code_heap.hpp b/vm/code_heap.hpp index 31116590ad..26e1faeb19 100755 --- a/vm/code_heap.hpp +++ b/vm/code_heap.hpp @@ -8,7 +8,8 @@ bool in_code_heap_p(cell ptr); 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); diff --git a/vm/contexts.hpp b/vm/contexts.hpp index 56642bcd1a..9828210111 100644 --- a/vm/contexts.hpp +++ b/vm/contexts.hpp @@ -36,8 +36,6 @@ struct context { 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) diff --git a/vm/image.cpp b/vm/image.cpp index 91fa1b801b..ee86dd5a3f 100755 --- a/vm/image.cpp +++ b/vm/image.cpp @@ -363,9 +363,9 @@ void factorvm::fixup_code_block(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() diff --git a/vm/profiler.cpp b/vm/profiler.cpp index e87dd947fd..8f714a992c 100755 --- a/vm/profiler.cpp +++ b/vm/profiler.cpp @@ -3,7 +3,6 @@ namespace factor { -bool profiling_p; void factorvm::init_profiler() { diff --git a/vm/profiler.hpp b/vm/profiler.hpp old mode 100644 new mode 100755 index b83ef3d354..ab1d27b9d8 --- a/vm/profiler.hpp +++ b/vm/profiler.hpp @@ -1,7 +1,6 @@ namespace factor { -extern bool profiling_p; void init_profiler(); code_block *compile_profiling_stub(cell word); PRIMITIVE(profiling); diff --git a/vm/vm.hpp b/vm/vm.hpp index fab910be48..d0f31e4d3f 100644 --- a/vm/vm.hpp +++ b/vm/vm.hpp @@ -1,17 +1,6 @@ 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 @@ -47,6 +36,7 @@ struct factorvm { inline void vmprim_clone(); // profiler + bool profiling_p; void init_profiler(); code_block *compile_profiling_stub(cell word_); void set_profiling(bool profiling);