Showing the changes to src/vm/stack.cpp (1 of 31 files). Show all
Unified · Split
| @@ -11,8 +11,16 @@ · 10 unmodified lines | |||
| 11 | #include <debug.h> | 11 | #include <debug.h> |
| 12 | #include <exceptions.h> | 12 | #include <exceptions.h> |
| 13 | 13 | ||
| 14 | using namespace disvm; | 14 | using disvm::debug::component_trace_t; |
| 15 | using namespace disvm::runtime; | 15 | using disvm::debug::log_level_t; |
| 16 | |||
| 17 | using disvm::runtime::type_descriptor_t; | ||
| 18 | using disvm::runtime::pointer_t; | ||
| 19 | using disvm::runtime::vm_pc_t; | ||
| 20 | using disvm::runtime::vm_module_ref_t; | ||
| 21 | using disvm::runtime::vm_frame_t; | ||
| 22 | using disvm::runtime::vm_stack_t; | ||
| 23 | using disvm::runtime::vm_alloc_t; | ||
| 16 | 24 | ||
| 17 | namespace | 25 | namespace |
| 18 | { | 26 | { |
| @@ -54,7 +62,7 @@ namespace · 35 unmodified lines | |||
| 54 | ~vm_stack_layout() | 62 | ~vm_stack_layout() |
| 55 | { | 63 | { |
| 56 | assert(top_page != nullptr); | 64 | assert(top_page != nullptr); |
| 57 | free_memory(top_page); | 65 | disvm::runtime::free_memory(top_page); |
| 58 | } | 66 | } |
| 59 | 67 | ||
| 60 | const std::size_t stack_page_size; | 68 | const std::size_t stack_page_size; |
| @@ -66,7 +74,7 @@ namespace · 5 unmodified lines | |||
| 66 | void *new_page() | 74 | void *new_page() |
| 67 | { | 75 | { |
| 68 | auto current_stack_page = top_page; | 76 | auto current_stack_page = top_page; |
| 69 | top_page = alloc_memory<vm_stack_page>(sizeof(vm_stack_page) + stack_page_size); | 77 | top_page = disvm::runtime::alloc_memory<vm_stack_page>(sizeof(vm_stack_page) + stack_page_size); |
| 70 | 78 | ||
| 71 | // Initialize the stack allocation. | 79 | // Initialize the stack allocation. |
| 72 | top_page->prev_page = current_stack_page; | 80 | top_page->prev_page = current_stack_page; |
| @@ -75,8 +83,8 @@ namespace · 2 unmodified lines | |||
| 75 | top_page->page_top_frame = nullptr; | 83 | top_page->page_top_frame = nullptr; |
| 76 | top_page->page_limit_addr = reinterpret_cast<std::uintptr_t>(top_page)+stack_page_size; | 84 | top_page->page_limit_addr = reinterpret_cast<std::uintptr_t>(top_page)+stack_page_size; |
| 77 | 85 | ||
| 78 | if (debug::is_component_tracing_enabled<debug::component_trace_t::memory>()) | 86 | if (disvm::debug::is_component_tracing_enabled<component_trace_t::memory>()) |
| 79 | debug::log_msg(debug::component_trace_t::memory, debug::log_level_t::debug, "alloc: vm stack alloc: %#" PRIxPTR " %#" PRIxPTR, top_page, top_page->page_limit_addr); | 87 | disvm::debug::log_msg(component_trace_t::memory, log_level_t::debug, "alloc: vm stack alloc: %#" PRIxPTR " %#" PRIxPTR, top_page, top_page->page_limit_addr); |
| 80 | 88 | ||
| 81 | return top_page->stack_data(); | 89 | return top_page->stack_data(); |
| 82 | } | 90 | } |
| @@ -87,10 +95,10 @@ namespace · 4 unmodified lines | |||
| 87 | auto current_stack_page = top_page->prev_page; | 95 | auto current_stack_page = top_page->prev_page; |
| 88 | assert(current_stack_page != nullptr); | 96 | assert(current_stack_page != nullptr); |
| 89 | 97 | ||
| 90 | free_memory(top_page); | 98 | disvm::runtime::free_memory(top_page); |
| 91 | 99 | ||
| 92 | if (debug::is_component_tracing_enabled<debug::component_trace_t::memory>()) | 100 | if (disvm::debug::is_component_tracing_enabled<component_trace_t::memory>()) |
| 93 | debug::log_msg(debug::component_trace_t::memory, debug::log_level_t::debug, "free: vm stack alloc"); | 101 | disvm::debug::log_msg(component_trace_t::memory, log_level_t::debug, "free: vm stack alloc"); |
| 94 | 102 | ||
| 95 | // Set the top page | 103 | // Set the top page |
| 96 | top_page = current_stack_page; | 104 | top_page = current_stack_page; |
| @@ -110,8 +118,8 @@ vm_frame_t::vm_frame_t(std::shared_ptr<const type_descriptor_t> &td) · 13 unmodified lines | |||
| 110 | prev_frame() = nullptr; | 118 | prev_frame() = nullptr; |
| 111 | prev_module_ref() = nullptr; | 119 | prev_module_ref() = nullptr; |
| 112 | 120 | ||
| 113 | if (debug::is_component_tracing_enabled<debug::component_trace_t::memory>()) | 121 | if (disvm::debug::is_component_tracing_enabled<component_trace_t::memory>()) |
| 114 | debug::log_msg(debug::component_trace_t::memory, debug::log_level_t::debug, "init: vm frame: %#" PRIxPTR " %d", this, frame_type->size_in_bytes); | 122 | disvm::debug::log_msg(component_trace_t::memory, log_level_t::debug, "init: vm frame: %#" PRIxPTR " %d", this, frame_type->size_in_bytes); |
| 115 | } | 123 | } |
| 116 | 124 | ||
| 117 | vm_frame_t::~vm_frame_t() | 125 | vm_frame_t::~vm_frame_t() |
| @@ -120,8 +128,8 @@ vm_frame_t::~vm_frame_t() · 2 unmodified lines | |||
| 120 | 128 | ||
| 121 | destroy_memory(*frame_type, base()); | 129 | destroy_memory(*frame_type, base()); |
| 122 | 130 | ||
| 123 | if (debug::is_component_tracing_enabled<debug::component_trace_t::memory>()) | 131 | if (disvm::debug::is_component_tracing_enabled<component_trace_t::memory>()) |
| 124 | debug::log_msg(debug::component_trace_t::memory, debug::log_level_t::debug, "destroy: vm frame: %#" PRIxPTR, this); | 132 | disvm::debug::log_msg(component_trace_t::memory, log_level_t::debug, "destroy: vm frame: %#" PRIxPTR, this); |
| 125 | } | 133 | } |
| 126 | 134 | ||
| 127 | void vm_frame_t::copy_frame_contents(const vm_frame_t &other) | 135 | void vm_frame_t::copy_frame_contents(const vm_frame_t &other) |
| @@ -181,7 +189,7 @@ vm_stack_t::vm_stack_t(std::size_t stack_extent) · 53 unmodified lines | |||
| 181 | : _mem{ std::make_unique<vm_stack_layout>(stack_extent) } | 189 | : _mem{ std::make_unique<vm_stack_layout>(stack_extent) } |
| 182 | { | 190 | { |
| 183 | assert(0 < stack_extent && stack_extent < static_cast<std::size_t>(std::numeric_limits<word_t>::max())); | 191 | assert(0 < stack_extent && stack_extent < static_cast<std::size_t>(std::numeric_limits<word_t>::max())); |
| 184 | debug::log_msg(debug::component_trace_t::memory, debug::log_level_t::debug, "init: vm stack"); | 192 | log_msg(component_trace_t::memory, log_level_t::debug, "init: vm stack"); |
| 185 | } | 193 | } |
| 186 | 194 | ||
| 187 | vm_stack_t::~vm_stack_t() | 195 | vm_stack_t::~vm_stack_t() |
| @@ -195,7 +203,7 @@ vm_stack_t::~vm_stack_t() · 7 unmodified lines | |||
| 195 | _mem->release(); | 203 | _mem->release(); |
| 196 | _mem.reset(); | 204 | _mem.reset(); |
| 197 | 205 | ||
| 198 | debug::log_msg(debug::component_trace_t::memory, debug::log_level_t::debug, "destroy: vm stack"); | 206 | log_msg(component_trace_t::memory, log_level_t::debug, "destroy: vm stack"); |
| 199 | } | 207 | } |
| 200 | 208 | ||
| 201 | vm_frame_t *vm_stack_t::alloc_frame(std::shared_ptr<const type_descriptor_t> frame_type) | 209 | vm_frame_t *vm_stack_t::alloc_frame(std::shared_ptr<const type_descriptor_t> frame_type) |
| @@ -244,8 +252,8 @@ vm_frame_t *vm_stack_t::push_frame() · 42 unmodified lines | |||
| 244 | 252 | ||
| 245 | layout->top_frame = new_top_frame; | 253 | layout->top_frame = new_top_frame; |
| 246 | 254 | ||
| 247 | if (debug::is_component_tracing_enabled<debug::component_trace_t::stack>()) | 255 | if (disvm::debug::is_component_tracing_enabled<component_trace_t::stack>()) |
| 248 | debug::log_msg(debug::component_trace_t::stack, debug::log_level_t::debug, "update: push vm frame: %#" PRIxPTR, new_top_frame); | 256 | log_msg(component_trace_t::stack, log_level_t::debug, "update: push vm frame: %#" PRIxPTR, new_top_frame); |
| 249 | 257 | ||
| 250 | return new_top_frame; | 258 | return new_top_frame; |
| 251 | } | 259 | } |
| @@ -284,8 +292,8 @@ vm_frame_t *vm_stack_t::pop_frame() · 32 unmodified lines | |||
| 284 | } | 292 | } |
| 285 | } | 293 | } |
| 286 | 294 | ||
| 287 | if (debug::is_component_tracing_enabled<debug::component_trace_t::stack>()) | 295 | if (disvm::debug::is_component_tracing_enabled<component_trace_t::stack>()) |
| 288 | debug::log_msg(debug::component_trace_t::stack, debug::log_level_t::debug, "update: pop vm frame: %#" PRIxPTR, current_frame); | 296 | log_msg(component_trace_t::stack, log_level_t::debug, "update: pop vm frame: %#" PRIxPTR, current_frame); |
| 289 | 297 | ||
| 290 | return current_frame; | 298 | return current_frame; |
| 291 | } | 299 | } |