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
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)
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
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