]> gitweb.factorcode.org Git - factor.git/blobdiff - vm/compaction.cpp
webapps.wiki: adding search bar
[factor.git] / vm / compaction.cpp
index f1dc8b937a1f13f6f13ee36c85715889735f6b8a..7a2aed6172fe67c48be0c7b8aa98233ee6bba94e 100644 (file)
@@ -97,8 +97,8 @@ void factor_vm::collect_compact_impl() {
   const code_block* code_finger = (code_block*)code->allocator->start;
 
   {
-    compaction_fixup fixup(data_forwarding_map, code_forwarding_map, &data_finger,
-                           &code_finger);
+    compaction_fixup fixup(data_forwarding_map, code_forwarding_map,
+                           &data_finger, &code_finger);
     slot_visitor<compaction_fixup> forwarder(this, fixup);
 
     forwarder.visit_uninitialized_code_blocks();
@@ -109,6 +109,8 @@ void factor_vm::collect_compact_impl() {
     // Slide everything in tenured space up, and update data and code heap
     // pointers inside objects.
     auto compact_object_func = [&](object* old_addr, object* new_addr, cell size) {
+      (void)old_addr;
+      (void)size;
       forwarder.visit_slots(new_addr);
       forwarder.visit_object_code_block(new_addr);
       tenured->starts.record_object_start_offset(new_addr);
@@ -120,6 +122,7 @@ void factor_vm::collect_compact_impl() {
     auto compact_code_func = [&](code_block* old_addr,
                                  code_block* new_addr,
                                  cell size) {
+      (void)size;
       forwarder.visit_code_block_objects(new_addr);
       cell old_entry_point = old_addr->entry_point();
       forwarder.visit_instruction_operands(new_addr, old_entry_point);
@@ -136,6 +139,7 @@ void factor_vm::collect_compact_impl() {
   // the code heap. Since the code heap has now been compacted, those
   // pointers are invalid and we need to update them.
   auto callback_updater = [&](code_block* stub, cell size) {
+    (void)size;
     callbacks->update(stub);
   };
   callbacks->allocator->iterate(callback_updater, no_fixup());
@@ -143,23 +147,23 @@ void factor_vm::collect_compact_impl() {
   code->initialize_all_blocks_set();
 
   if (event)
-    event->ended_compaction();
+    event->ended_phase(PHASE_DATA_COMPACTION);
 }
 
 void factor_vm::collect_compact() {
   collect_mark_impl();
   collect_compact_impl();
 
+  // Compaction did not free up enough memory. Grow the data heap.
   if (data->high_fragmentation_p()) {
-    // Compaction did not free up enough memory. Grow the heap.
-    set_current_gc_op(collect_growing_heap_op);
-    collect_growing_heap(0);
+    set_current_gc_op(COLLECT_GROWING_DATA_HEAP_OP);
+    collect_growing_data_heap(0);
   }
 
   code->flush_icache();
 }
 
-void factor_vm::collect_growing_heap(cell requested_size) {
+void factor_vm::collect_growing_data_heap(cell requested_size) {
   // Grow the data heap and copy all live objects to the new heap.
   data_heap* old = data;
   set_data_heap(data->grow(&nursery, requested_size));