analysis: add logs to dead method removal optimization
authorJean-Sebastien Gelinas <calestar@gmail.com>
Wed, 21 Oct 2009 21:55:01 +0000 (17:55 -0400)
committerJean Privat <jean@pryen.org>
Mon, 11 Jan 2010 21:52:34 +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/analysis/dead_method_removal.nit

index 96f7af8..948a172 100644 (file)
@@ -102,6 +102,7 @@ redef class Program
 
        fun dump_global_optimizations_information(directory_name: String) do
                dump_out_of_init_information(directory_name)
+               dump_dead_method_optimization(directory_name)
        end
 
        # This method will create log files storing analysis information
index 3b3d645..703a72b 100644 (file)
@@ -20,15 +20,31 @@ package dead_method_removal
 import reachable_method_analysis
 
 redef class Program
+       readable var _nb_removed_iroutines: Int = 0
+       readable var _nb_not_removed_iroutines: Int = 0
+
        # Calling this method will change all iroutines that are dead
        # and put an abort in them
        fun optimize_dead_methods do
                with_each_iroutines !action(i,m) do
                        if not rma.is_iroutine_reachable(i) then
                                i.set_not_reachable(m)
+                               _nb_removed_iroutines = nb_removed_iroutines + 1
+                       else
+                               _nb_not_removed_iroutines = nb_not_removed_iroutines + 1
                        end
                end
        end
+
+       # This method will create a file and output informations about this optimization
+       fun dump_dead_method_optimization(directory_name: String) do
+               var f = new OFStream.open("{directory_name}/{module.name}.dmr_opt.log")
+
+               f.write("Nb. dead iroutines removed: {nb_removed_iroutines}\n")
+               f.write("Nb. live iroutines: {nb_not_removed_iroutines}\n")
+
+               f.close
+       end
 end
 
 redef class IRoutine