X-Git-Url: http://nitlanguage.org diff --git a/src/analysis/analysis.nit b/src/analysis/analysis.nit index 6b0ec15..a5a6b80 100644 --- a/src/analysis/analysis.nit +++ b/src/analysis/analysis.nit @@ -31,18 +31,25 @@ import inline_methods import instantiated_type_analysis import reachable_method_analysis import reachable_as_init +import reachable_from_init_method_analysis # Global Analysis implementation 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 @@ -68,11 +75,21 @@ redef class Program var rai_builder = new ReachableAsInitBuilder(self) rai_builder.work rai = rai_builder.context + + 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) # Those are done before analysis fun do_global_pre_analysis_optimizations do assert tc.global + if not tc.no_inline_get_set then inline_get_set end # This method will optimize the program (in global compilation only) @@ -80,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 @@ -89,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