From 18ab09e493c9bbe610d0aff957d07672e638d82f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Lindqvist?= Date: Wed, 29 Jul 2015 16:53:04 +0200 Subject: [PATCH] VM: object_compaction_updater -> lambda func --- vm/compaction.cpp | 28 ++++++---------------------- 1 file changed, 6 insertions(+), 22 deletions(-) diff --git a/vm/compaction.cpp b/vm/compaction.cpp index 256642a719..7a29dec91a 100644 --- a/vm/compaction.cpp +++ b/vm/compaction.cpp @@ -85,24 +85,6 @@ struct code_compaction_fixup { } }; -struct object_compaction_updater { - factor_vm* parent; - compaction_fixup fixup; - object_start_map* starts; - - object_compaction_updater(factor_vm* parent, compaction_fixup fixup) - : parent(parent), - fixup(fixup), - starts(&parent->data->tenured->starts) {} - - void operator()(object* old_address, object* new_address, cell size) { - slot_visitor forwarder(parent, fixup); - forwarder.visit_slots(new_address); - forwarder.visit_object_code_block(new_address); - starts->record_object_start_offset(new_address); - } -}; - template void update_relocation(factor_vm* parent, cell old_entry_point, @@ -220,10 +202,12 @@ void factor_vm::collect_compact_impl() { /* Slide everything in tenured space up, and update data and code heap pointers inside objects. */ - { - object_compaction_updater object_updater(this, fixup); - tenured->compact(object_updater, fixup, &data_finger); - } + auto compact_object_func = [&](object* old_addr, object* new_addr, cell size) { + forwarder.visit_slots(new_addr); + forwarder.visit_object_code_block(new_addr); + tenured->starts.record_object_start_offset(new_addr); + }; + tenured->compact(compact_object_func, fixup, &data_finger); /* Slide everything in the code heap up, and update data and code heap pointers inside code blocks. */