]> gitweb.factorcode.org Git - factor.git/blobdiff - vm/vm.cpp
vm: strip out call-counting profiler
[factor.git] / vm / vm.cpp
index 50dc441086e6543e566d9fa8f36357755f479925..0029dd8c3570f0cdf27cf522541e3e60199bccc4 100755 (executable)
--- a/vm/vm.cpp
+++ b/vm/vm.cpp
@@ -1,16 +1,48 @@
-#include "master.hpp"\r
-\r
-namespace factor\r
-{\r
-\r
-factor_vm::factor_vm() :\r
-       nursery(0,0),\r
-       profiling_p(false),\r
-       secure_gc(false),\r
-       gc_off(false),\r
-       current_gc(NULL),\r
-       fep_disabled(false),\r
-       full_output(false)\r
-       { }\r
-\r
-}\r
+#include "master.hpp"
+
+namespace factor
+{
+
+factor_vm::factor_vm(THREADHANDLE thread) :
+       nursery(0,0),
+        thread(thread),
+       callback_id(0),
+       c_to_factor_func(NULL),
+       sampling_profiler_p(false),
+       signal_pipe_input(0),
+       signal_pipe_output(0),
+       gc_off(false),
+       current_gc(NULL),
+       current_gc_p(false),
+       current_jit_count(0),
+       gc_events(NULL),
+       fep_p(false),
+       fep_help_was_shown(false),
+       fep_disabled(false),
+       full_output(false),
+       last_nano_count(0),
+       signal_callstack_seg(NULL),
+       faulting_p(false),
+       safepoint()
+{
+       primitive_reset_dispatch_stats();
+}
+
+factor_vm::~factor_vm()
+{
+       delete_contexts();
+       if(signal_callstack_seg)
+       {
+               delete signal_callstack_seg;
+               signal_callstack_seg = NULL;
+       }
+       std::list<void **>::const_iterator iter = function_descriptors.begin();
+       std::list<void **>::const_iterator end = function_descriptors.end();
+       while(iter != end)
+       {
+               delete [] *iter;
+               iter++;
+       }
+}
+
+}