analysis: split optimization in two groups: pre and post analysis
authorJean-Sebastien Gelinas <calestar@gmail.com>
Mon, 23 Nov 2009 05:09:33 +0000 (00:09 -0500)
committerJean Privat <jean@pryen.org>
Mon, 11 Jan 2010 21:52:29 +0000 (16:52 -0500)
Signed-off-by: Jean-Sebastien Gelinas <calestar@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>

src/analysis/analysis.nit
src/nitc.nit

index d0f4773..6b0ec15 100644 (file)
@@ -70,7 +70,14 @@ redef class Program
                rai = rai_builder.context
        end
        # This method will optimize the program (in global compilation only)
-       fun do_global_optimizations do
+       # Those are done before analysis
+       fun do_global_pre_analysis_optimizations do
+               assert tc.global
+       end
+
+       # This method will optimize the program (in global compilation only)
+       # Those are done after analysis
+       fun do_global_post_analysis_optimizations do
                assert tc.global
                if not tc.no_dead_method_removal then optimize_dead_methods
        end
index 933d46b..938c7bb 100644 (file)
@@ -135,8 +135,9 @@ special AbstractCompiler
                        p.compute_main_method
                        p.generate_allocation_iroutines
                        if global then
+                               p.do_global_pre_analysis_optimizations
                                p.do_global_analysis
-                               p.do_global_optimizations
+                               p.do_global_post_analysis_optimizations
                                if opt_log.value then
                                        p.dump_global_analysis_information(log_directory)
                                end