Showing the changes to src/vm/stack.cpp (1 of 11 files). Show all
Unified · Split
| @@ -19,7 +19,7 @@ namespace · 18 unmodified lines | ||
| 19 | 19 | struct vm_stack_page |
| 20 | 20 | { |
| 21 | 21 | vm_stack_page *prev_page; |
| 22 | − uintptr_t page_limit_addr; | |
| 22 | + std::uintptr_t page_limit_addr; | |
| 23 | 23 | vm_frame_t *page_top_frame; // Do not free. This is used as a tracking pointer. |
| 24 | 24 | |
| 25 | 25 | void *stack_data() const |
| @@ -30,7 +30,7 @@ namespace · 4 unmodified lines | ||
| 30 | 30 | |
| 31 | 31 | bool contains_frame(const vm_frame_t *frame) const |
| 32 | 32 | { |
| 33 | − return reinterpret_cast<uintptr_t>(stack_data()) <= reinterpret_cast<uintptr_t>(frame) && reinterpret_cast<uintptr_t>(frame) < page_limit_addr; | |
| 33 | + return reinterpret_cast<std::uintptr_t>(stack_data()) <= reinterpret_cast<std::uintptr_t>(frame) && reinterpret_cast<std::uintptr_t>(frame) < page_limit_addr; | |
| 34 | 34 | } |
| 35 | 35 | }; |
| 36 | 36 | |
| @@ -66,16 +66,17 @@ namespace · 29 unmodified lines | ||
| 66 | 66 | void *new_page() |
| 67 | 67 | { |
| 68 | 68 | auto current_stack_page = top_page; |
| 69 | − top_page = alloc_memory<vm_stack_page>(sizeof(vm_stack_page) + stack_page_size); | |
| 69 | + top_page = calloc_memory<vm_stack_page>(sizeof(vm_stack_page) + stack_page_size); | |
| 70 | 70 | |
| 71 | 71 | // Initialize the stack allocation. |
| 72 | 72 | top_page->prev_page = current_stack_page; |
| 73 | 73 | |
| 74 | 74 | // The top frame member is only for tracking and so is initialized to null. |
| 75 | 75 | top_page->page_top_frame = nullptr; |
| 76 | − top_page->page_limit_addr = reinterpret_cast<uintptr_t>(top_page)+stack_page_size; | |
| 76 | + top_page->page_limit_addr = reinterpret_cast<std::uintptr_t>(top_page)+stack_page_size; | |
| 77 | 77 | |
| 78 | − debug::log_msg(debug::component_trace_t::memory, debug::log_level_t::debug, "alloc: vm stack alloc: %#" PRIxPTR " %#" PRIxPTR "\n", top_page, top_page->page_limit_addr); | |
| 78 | + if (debug::is_component_tracing_enabled<debug::component_trace_t::memory>()) | |
| 79 | + debug::log_msg(debug::component_trace_t::memory, debug::log_level_t::debug, "alloc: vm stack alloc: %#" PRIxPTR " %#" PRIxPTR "\n", top_page, top_page->page_limit_addr); | |
| 79 | 80 | |
| 80 | 81 | return top_page->stack_data(); |
| 81 | 82 | } |
| @@ -87,7 +88,9 @@ namespace · 5 unmodified lines | ||
| 87 | 88 | assert(current_stack_page != nullptr); |
| 88 | 89 | |
| 89 | 90 | free_memory(top_page); |
| 90 | − debug::log_msg(debug::component_trace_t::memory, debug::log_level_t::debug, "free: vm stack alloc\n"); | |
| 91 | + | |
| 92 | + if (debug::is_component_tracing_enabled<debug::component_trace_t::memory>()) | |
| 93 | + debug::log_msg(debug::component_trace_t::memory, debug::log_level_t::debug, "free: vm stack alloc\n"); | |
| 91 | 94 | |
| 92 | 95 | // Set the top page |
| 93 | 96 | top_page = current_stack_page; |
| @@ -158,7 +161,7 @@ vm_module_ref_t *&vm_frame_t::prev_module_ref() const · 64 unmodified lines | ||
| 158 | 161 | |
| 159 | 162 | pointer_t vm_frame_t::fixed_point_register_1() const |
| 160 | 163 | { |
| 161 | − const auto offset = runtime_constants::fixed_point_register_1_frame_offset; | |
| 164 | + const auto offset = vm_frame_constants::fixed_point_register_1_frame_offset; | |
| 162 | 165 | assert(offset < frame_type->size_in_bytes); |
| 163 | 166 | |
| 164 | 167 | auto p = reinterpret_cast<uint8_t *>(base()) + offset; |
| @@ -167,7 +170,7 @@ pointer_t vm_frame_t::fixed_point_register_1() const · 2 unmodified lines | ||
| 167 | 170 | |
| 168 | 171 | pointer_t vm_frame_t::fixed_point_register_2() const |
| 169 | 172 | { |
| 170 | − const auto offset = runtime_constants::fixed_point_register_2_frame_offset; | |
| 173 | + const auto offset = vm_frame_constants::fixed_point_register_2_frame_offset; | |
| 171 | 174 | assert(offset < frame_type->size_in_bytes); |
| 172 | 175 | |
| 173 | 176 | auto p = reinterpret_cast<uint8_t *>(base()) + offset; |
| @@ -210,16 +213,17 @@ vm_frame_t *vm_stack_t::alloc_frame(std::shared_ptr<const type_descriptor_t> fra · 36 unmodified lines | ||
| 210 | 213 | vm_frame_t *new_frame; |
| 211 | 214 | if (page_top_frame == nullptr) |
| 212 | 215 | { |
| 213 | − new_frame = ::new(layout->top_page->stack_data())vm_frame_t{ frame_type }; | |
| 216 | + auto new_frame_addr = layout->top_page->stack_data(); | |
| 217 | + new_frame = ::new(new_frame_addr)vm_frame_t{ frame_type }; | |
| 214 | 218 | } |
| 215 | 219 | else |
| 216 | 220 | { |
| 217 | − auto current_page_top_frame_addr = reinterpret_cast<std::size_t>(page_top_frame); | |
| 221 | + auto current_page_top_frame_addr = reinterpret_cast<std::uintptr_t>(page_top_frame); | |
| 218 | 222 | auto new_frame_addr_maybe = current_page_top_frame_addr + (sizeof(vm_frame_t) + page_top_frame->frame_type->size_in_bytes); |
| 219 | 223 | |
| 220 | 224 | // If the new frame is not going to fit on the current page, create a new page. |
| 221 | 225 | if ((new_frame_addr_maybe + new_frame_size) >= layout->top_page->page_limit_addr) |
| 222 | − new_frame_addr_maybe = reinterpret_cast<uintptr_t>(layout->new_page()); | |
| 226 | + new_frame_addr_maybe = reinterpret_cast<std::uintptr_t>(layout->new_page()); | |
| 223 | 227 | |
| 224 | 228 | new_frame = ::new(reinterpret_cast<void *>(new_frame_addr_maybe))vm_frame_t{ frame_type }; |
| 225 | 229 | } |