]> gitweb.factorcode.org Git - factor.git/commitdiff
VM: refactoring intended to remove trace_*-methods that are just
authorBjörn Lindqvist <bjourne@gmail.com>
Sat, 3 Jan 2015 21:36:41 +0000 (22:36 +0100)
committerBjörn Lindqvist <bjourne@gmail.com>
Thu, 15 Jan 2015 09:29:12 +0000 (09:29 +0000)
simple delegations to the data/code_visitor instances

vm/aging_collector.cpp
vm/collector.hpp
vm/full_collector.cpp
vm/full_collector.hpp
vm/nursery_collector.cpp
vm/to_tenured_collector.cpp

index 2683a299869961e5ec15b65653280ee44ed6dab3..dfd9b6c31ce8ca024037b2a2a123d4dfc71c81f1 100644 (file)
@@ -38,8 +38,8 @@ void factor_vm::collect_aging() {
     copying_collector<aging_space, aging_policy> collector(this,
                                                            this->data->aging,
                                                            aging_policy(this));
-    collector.trace_roots();
-    collector.trace_contexts();
+    collector.data_visitor.visit_roots();
+    collector.data_visitor.visit_contexts();
 
     collector.cheneys_algorithm();
 
index 8894af56db055211bb309d2783f9ac9f36ceaa47..efab4cfb197acd73efc1505ccbd188b644187344 100644 (file)
@@ -107,34 +107,20 @@ template <typename TargetGeneration, typename Policy> struct collector {
         decks_scanned(0),
         code_blocks_scanned(0) {}
 
-  void trace_handle(cell* handle) { data_visitor.visit_handle(handle); }
-
   void trace_object(object* ptr) {
     data_visitor.visit_slots(ptr);
     if (ptr->type() == ALIEN_TYPE)
       ((alien*)ptr)->update_address();
   }
 
-  void trace_roots() { data_visitor.visit_roots(); }
-
-  void trace_contexts() { data_visitor.visit_contexts(); }
-
-  void trace_code_block_objects(code_block* compiled) {
-    data_visitor.visit_code_block_objects(compiled);
-  }
-
-  void trace_embedded_literals(code_block* compiled) {
-    data_visitor.visit_embedded_literals(compiled);
-  }
-
   void trace_code_heap_roots(std::set<code_block*>* remembered_set) {
     std::set<code_block*>::const_iterator iter = remembered_set->begin();
     std::set<code_block*>::const_iterator end = remembered_set->end();
 
     for (; iter != end; iter++) {
       code_block* compiled = *iter;
-      trace_code_block_objects(compiled);
-      trace_embedded_literals(compiled);
+      data_visitor.visit_code_block_objects(compiled);
+      data_visitor.visit_embedded_literals(compiled);
       compiled->flush_icache();
       code_blocks_scanned++;
     }
index e1f36230b84adfed98207d45af7cf2e13f8af38e..e744af5520cd130c148069b6cc544469d04b93c6 100644 (file)
@@ -13,16 +13,6 @@ void full_collector::trace_code_block(code_block* compiled) {
   code_visitor.visit_embedded_code_pointers(compiled);
 }
 
-void full_collector::trace_context_code_blocks() {
-  code_visitor.visit_context_code_blocks();
-}
-
-void full_collector::trace_code_roots() { code_visitor.visit_code_roots(); }
-
-void full_collector::trace_object_code_block(object* obj) {
-  code_visitor.visit_object_code_block(obj);
-}
-
 /* After a sweep, invalidate any code heap roots which are not marked,
    so that if a block makes a tail call to a generic word, and the PIC
    compiler triggers a GC, and the caller block gets gets GCd as a result,
@@ -49,11 +39,11 @@ void factor_vm::collect_mark_impl(bool trace_contexts_p) {
   code->clear_mark_bits();
   data->tenured->clear_mark_bits();
 
-  collector.trace_roots();
+  collector.data_visitor.visit_roots();
   if (trace_contexts_p) {
-    collector.trace_contexts();
-    collector.trace_context_code_blocks();
-    collector.trace_code_roots();
+    collector.data_visitor.visit_contexts();
+    collector.code_visitor.visit_context_code_blocks();
+    collector.code_visitor.visit_code_roots();
   }
 
   while (!mark_stack.empty()) {
@@ -66,7 +56,7 @@ void factor_vm::collect_mark_impl(bool trace_contexts_p) {
     } else {
       object* obj = (object*)ptr;
       collector.trace_object(obj);
-      collector.trace_object_code_block(obj);
+      collector.code_visitor.visit_object_code_block(obj);
     }
   }
 
index a17dec51eed140f19f0fa1ca2954c07f086f732a..898e033eb357c8ad11d61f296241d44612204beb 100644 (file)
@@ -27,9 +27,6 @@ struct full_collector : collector<tenured_space, full_policy> {
 
   explicit full_collector(factor_vm* parent);
   void trace_code_block(code_block* compiled);
-  void trace_context_code_blocks();
-  void trace_code_roots();
-  void trace_object_code_block(object* obj);
 };
 
 }
index 3c973fe4ff913f263ea2411afd6c7a852a0be631..c8a18581e075253161d1802c496b4bc277325d36 100644 (file)
@@ -9,8 +9,8 @@ void factor_vm::collect_nursery() {
                                                            this->data->aging,
                                                            nursery_policy(this));
 
-  collector.trace_roots();
-  collector.trace_contexts();
+  collector.data_visitor.visit_roots();
+  collector.data_visitor.visit_contexts();
 
   gc_event* event = current_gc->event;
 
index c8b68369199fa3c7c2c91e6b701e3d36c08ceea9..c3845c50a05098f3ffdd5f1161dca3d705649e1a 100644 (file)
@@ -22,8 +22,8 @@ void factor_vm::collect_to_tenured() {
 
   mark_stack.clear();
 
-  collector.trace_roots();
-  collector.trace_contexts();
+  collector.data_visitor.visit_roots();
+  collector.data_visitor.visit_contexts();
 
   gc_event* event = current_gc->event;