]> gitweb.factorcode.org Git - factor.git/blobdiff - vm/vm.cpp
Put brackets around ipv6 addresses in `inet6 present`
[factor.git] / vm / vm.cpp
old mode 100755 (executable)
new mode 100644 (file)
index 72c6329..bf40379
--- a/vm/vm.cpp
+++ b/vm/vm.cpp
@@ -1,18 +1,64 @@
-#include "master.hpp"\r
-\r
-namespace factor\r
-{\r
-\r
-factor_vm::factor_vm() :\r
-       nursery(0,0),\r
-       profiling_p(false),\r
-       gc_off(false),\r
-       current_gc(NULL),\r
-       gc_events(NULL),\r
-       fep_disabled(false),\r
-       full_output(false)\r
-{\r
-       primitive_reset_dispatch_stats();\r
-}\r
-\r
-}\r
+#include "master.hpp"
+
+namespace factor {
+
+factor_vm::factor_vm(THREADHANDLE thread)
+    : ctx(NULL),
+      nursery(0, 0),
+      faulting_p(false),
+      thread(thread),
+#if defined(WINDOWS)
+      thread_id(GetCurrentThreadId()),
+      ctrl_break_thread(NULL),
+#endif
+      callback_id(0),
+      c_to_factor_func(NULL),
+      sampling_profiler_p(false),
+      signal_pipe_input(0),
+      signal_pipe_output(0),
+      current_sample(0, 0, 0, 0, 0),
+      gc_off(false),
+      data(NULL), code(NULL), callbacks(NULL),
+      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),
+      object_counter(0),
+      last_nano_count(0),
+      signal_callstack_seg(NULL),
+      safepoint_fep_p(false),
+      stop_on_ctrl_break(false) {
+  primitive_reset_dispatch_stats();
+}
+
+factor_vm::~factor_vm() {
+  free(alien_offset(special_objects[OBJ_EXECUTABLE]));
+  free(alien_offset(special_objects[OBJ_IMAGE]));
+  close_console();
+  FACTOR_ASSERT(!ctx);
+  FACTOR_FOR_EACH(unused_contexts) {
+    delete *iter;
+  }
+  FACTOR_FOR_EACH(active_contexts) {
+    delete *iter;
+  }
+  if (callbacks)
+    delete callbacks;
+  if (data)
+    delete data;
+  if (code)
+    delete code;
+  if (signal_callstack_seg) {
+    delete signal_callstack_seg;
+    signal_callstack_seg = NULL;
+  }
+  FACTOR_FOR_EACH(function_descriptors) {
+    delete[] * iter;
+  }
+}
+
+}