Merge branch 'alexis/various-fixes' into wip
[nit.git] / src / analysis / analysis.nit
index 881cfec..a5a6b80 100644 (file)
@@ -37,15 +37,19 @@ import reachable_from_init_method_analysis
 import cha_analysis
 import rta_analysis
 import reachable_as_init_impl
+import reachable_from_init_method_analysis_impl
 
 # Global Optimizations
 import dead_method_removal
 import inline_get_and_set
+import remove_out_of_init_get_test
 
 redef class ToolContext
        readable writable var _global_callgraph: String = "rta"
        readable writable var _no_dead_method_removal: Bool = false
        readable writable var _no_inline_get_set: Bool = false
+       readable writable var _no_callgraph_from_init: Bool = false
+       readable writable var _no_out_of_init_get_test_removal: Bool = false
 end
 
 redef class Program
@@ -72,7 +76,13 @@ redef class Program
                rai_builder.work
                rai = rai_builder.context
 
-               rfima = new DefaultReachableFromInitMethodAnalysis
+               if not tc.no_callgraph_from_init then
+                       var b = new RFIMABuilder(self)
+                       b.work
+                       rfima = b.context
+               end
+
+               if rfima == null then rfima = new DefaultReachableFromInitMethodAnalysis
        end
 
        # This method will optimize the program (in global compilation only)
@@ -87,6 +97,13 @@ redef class Program
        fun do_global_post_analysis_optimizations do
                assert tc.global
                if not tc.no_dead_method_removal then optimize_dead_methods
+               if not tc.no_out_of_init_get_test_removal then optimize_out_of_init_getters
+       end
+
+       fun dump_global_optimizations_information(directory_name: String) do
+               dump_out_of_init_information(directory_name)
+               dump_dead_method_optimization(directory_name)
+               dump_inline_get_set(directory_name)
        end
 
        # This method will create log files storing analysis information
@@ -96,6 +113,8 @@ redef class Program
                dump_instantiated_types(directory_name)
                dump_not_instantiated_types(directory_name)
                dump_reachable_as_init_methods(directory_name)
+               dump_reachable_methods_from_init(directory_name)
+               dump_unreachable_methods_from_init(directory_name)
        end
 end