diff --git a/vm/profiler.cpp b/vm/profiler.cpp old mode 100644 new mode 100755 index a3265e0ffa..7b8f04a3bd --- a/vm/profiler.cpp +++ b/vm/profiler.cpp @@ -5,13 +5,18 @@ namespace factor bool profiling_p; -void init_profiler() +void factorvm::init_profiler() { profiling_p = false; } +void init_profiler() +{ + return vm->init_profiler(); +} + /* Allocates memory */ -code_block *compile_profiling_stub(cell word_) +code_block *factorvm::compile_profiling_stub(cell word_) { gc_root word(word_); @@ -21,8 +26,13 @@ code_block *compile_profiling_stub(cell word_) return jit.to_code_block(); } +code_block *compile_profiling_stub(cell word_) +{ + return vm->compile_profiling_stub(word_); +} + /* Allocates memory */ -static void set_profiling(bool profiling) +void factorvm::set_profiling(bool profiling) { if(profiling == profiling_p) return; @@ -49,9 +59,19 @@ static void set_profiling(bool profiling) iterate_code_heap(relocate_code_block); } -PRIMITIVE(profiling) +void set_profiling(bool profiling) +{ + return vm->set_profiling(profiling); +} + +inline void factorvm::vmprim_profiling() { set_profiling(to_boolean(dpop())); } +PRIMITIVE(profiling) +{ + PRIMITIVE_GETVM()->vmprim_profiling(); +} + } diff --git a/vm/vm.hpp b/vm/vm.hpp index 7533d748b0..c18ba90772 100644 --- a/vm/vm.hpp +++ b/vm/vm.hpp @@ -31,6 +31,12 @@ struct factorvm { inline void vmprim_load_locals(); cell clone_object(cell obj_); inline void vmprim_clone(); + + // profiler + void init_profiler(); + code_block *compile_profiling_stub(cell word_); + void set_profiling(bool profiling); + inline void vmprim_profiling(); // next method here: };