History

Move some basic offset functions to header files for inlining ease Replace enum_pointer_field functions with custom implementations - GC now has custom implementation - other implementations use template<> version Fix misuse of shared_ptr<type_descriptor_t> in various built-in types Observed 5 - 8 % improvement in GC for compiler scenario.

arr committed 9 years ago

Commit cd2748b1 parent 3dd1c8210 files · +115 −160Browse files

Showing the changes to src/vm/stack.cpp (1 of 10 files). Show all

Unified · Split

src/vm/stack.cpp+3−3
@@ -106,7 +106,7 @@ namespace · 105 unmodified lines
106106 };
107107 }
108108
109−vm_frame_t::vm_frame_t(std::shared_ptr<const type_descriptor_t> &td)
109+vm_frame_t::vm_frame_t(std::shared_ptr<const type_descriptor_t> td)
110110 : frame_type{ std::move(td) }
111111 {
112112 assert(frame_type != nullptr);
@@ -222,7 +222,7 @@ vm_frame_t *vm_stack_t::alloc_frame(std::shared_ptr<const type_descriptor_t> fra · 109 unmodified lines
222222 if (page_top_frame == nullptr)
223223 {
224224 auto new_frame_addr = layout->top_page->stack_data();
225− new_frame = ::new(new_frame_addr)vm_frame_t{ frame_type };
225+ new_frame = ::new(new_frame_addr)vm_frame_t{ std::move(frame_type) };
226226 }
227227 else
228228 {
@@ -233,7 +233,7 @@ vm_frame_t *vm_stack_t::alloc_frame(std::shared_ptr<const type_descriptor_t> fra · 4 unmodified lines
233233 if ((new_frame_addr_maybe + new_frame_size) >= layout->top_page->page_limit_addr)
234234 new_frame_addr_maybe = reinterpret_cast<std::uintptr_t>(layout->new_page());
235235
236− new_frame = ::new(reinterpret_cast<void *>(new_frame_addr_maybe))vm_frame_t{ frame_type };
236+ new_frame = ::new(reinterpret_cast<void *>(new_frame_addr_maybe))vm_frame_t{ std::move(frame_type) };
237237 }
238238
239239 // Record the top frame on the page