analysis: add 'dump_global_optimizations_information' to generate logs about optimiza...
[nit.git] / src / analysis / rta_analysis.nit
index 000510e..0fd4165 100644 (file)
@@ -62,6 +62,7 @@ class RtaBuilder
                if context.is_class_instantiated(m_cls) then return true
 
                for cls in m_cls.cshe.smallers do
+                       if not cls[m.global] == m then continue
                        if context.is_class_instantiated(cls) then return true
                end
                return false
@@ -135,7 +136,7 @@ class RtaBuilder
 
        # Need to hard-code some automaticaly instanciated types !
        private fun force_some_type_analysis do
-               var forced_types = ["Object", "Bool", "Float", "Int", "String", "NativeString", "Range", "Array", "ArrayIterator"]
+               var forced_types = ["Object", "Bool", "Float", "Int", "String", "NativeString", "Range", "Array", "ArrayIterator", "Inline__"]
 
                for some_type in forced_types do
                        if not program.module.has_global_class_named(some_type.to_symbol) then continue
@@ -143,6 +144,16 @@ class RtaBuilder
                        add_instantiated_class(cls_type)
                end
 
+               if program.module.has_global_class_named("Inline__".to_symbol) then
+                       var ptr_class = program.module.class_by_name("Inline__".to_symbol)
+                       # Assume that all classes that are subclasses of Inline__
+                       # can be inlined without notice ...
+                       # and are always counted as instantiated
+                       for ptr_sub_class in ptr_class.cshe.smallers do
+                               add_instantiated_class(ptr_sub_class)
+                       end
+               end
+
                if program.module.has_global_class_named("Pointer".to_symbol) then
                        var ptr_class = program.module.class_by_name("Pointer".to_symbol)
                        # Assume that all classes that are subclasses of Pointer