Merge branch 'bench'
[nit.git] / src / rapid_type_analysis.nit
index fe49d70..e383656 100644 (file)
@@ -47,6 +47,9 @@ import auto_super_init
 redef class ModelBuilder
        fun do_rapid_type_analysis(mainmodule: MModule): RapidTypeAnalysis
        do
+               var time0 = get_time
+               self.toolcontext.info("*** RAPID TYPE ANALYSIS ***", 1)
+
                var model = self.model
                var analysis = new RapidTypeAnalysis(self, mainmodule)
                var nmodule = self.nmodules.first
@@ -62,6 +65,10 @@ redef class ModelBuilder
                        analysis.add_monomorphic_send(maintype, mainprop)
                end
                analysis.run_analysis
+
+               var time1 = get_time
+               self.toolcontext.info("*** END RAPID TYPE ANALYSIS: {time1-time0} ***", 2)
+
                return analysis
        end
 end
@@ -592,15 +599,9 @@ redef class ASuperExpr
                        return
                end
 
-               #FIXME: we do not want an ugly static call!
-               var mpropdef = v.mpropdef
-               var mpropdefs = mpropdef.mproperty.lookup_super_definitions(mpropdef.mclassdef.mmodule, mpropdef.mclassdef.bound_mtype)
-               if mpropdefs.length != 1 then
-                       debug("MPRODFEFS for super {mpropdef} for {v.receiver}: {mpropdefs.join(", ")}")
-               end
-               var msuperpropdef = mpropdefs.first
-               assert msuperpropdef isa MMethodDef
-               v.analysis.add_static_call(v.receiver, msuperpropdef)
+               var mpropdef = v.mpropdef.lookup_next_definition(v.analysis.mainmodule, v.receiver)
+               assert mpropdef isa MMethodDef
+               v.analysis.add_static_call(v.receiver, mpropdef)
        end
 end