]> gitweb.factorcode.org Git - factor.git/blob - vm/vm.cpp
io.streams.256color: faster by caching styles
[factor.git] / vm / vm.cpp
1 #include "master.hpp"
2
3 namespace factor {
4
5 factor_vm::factor_vm(THREADHANDLE thread)
6     : ctx(NULL),
7       nursery(0, 0),
8       faulting_p(false),
9       thread(thread),
10 #if defined(WINDOWS)
11       thread_id(GetCurrentThreadId()),
12       ctrl_break_thread(NULL),
13 #endif
14       callback_id(0),
15       c_to_factor_func(NULL),
16       sampling_profiler_p(false),
17       signal_pipe_input(0),
18       signal_pipe_output(0),
19       current_sample(0, 0, 0, 0, 0),
20       gc_off(false),
21       data(NULL), code(NULL), callbacks(NULL),
22       current_gc(NULL),
23       current_gc_p(false),
24       current_jit_count(0),
25       gc_events(NULL),
26       fep_p(false),
27       fep_help_was_shown(false),
28       fep_disabled(false),
29       full_output(false),
30       object_counter(0),
31       last_nano_count(0),
32       signal_callstack_seg(NULL),
33       safepoint_fep_p(false),
34       stop_on_ctrl_break(false) {
35   primitive_reset_dispatch_stats();
36 }
37
38 factor_vm::~factor_vm() {
39   free(alien_offset(special_objects[OBJ_EXECUTABLE]));
40   free(alien_offset(special_objects[OBJ_IMAGE]));
41   close_console();
42   FACTOR_ASSERT(!ctx);
43   FACTOR_FOR_EACH(unused_contexts) {
44     delete *iter;
45   }
46   FACTOR_FOR_EACH(active_contexts) {
47     delete *iter;
48   }
49   if (callbacks)
50     delete callbacks;
51   if (data)
52     delete data;
53   if (code)
54     delete code;
55   if (signal_callstack_seg) {
56     delete signal_callstack_seg;
57     signal_callstack_seg = NULL;
58   }
59   FACTOR_FOR_EACH(function_descriptors) {
60     delete[] * iter;
61   }
62 }
63
64 }