analysis: add support for 'Inline__' in RTA
authorJean-Sebastien Gelinas <calestar@gmail.com>
Tue, 24 Nov 2009 23:45:03 +0000 (18:45 -0500)
committerJean Privat <jean@pryen.org>
Mon, 11 Jan 2010 21:52:30 +0000 (16:52 -0500)
Signed-off-by: Jean-Sebastien Gelinas <calestar@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>

src/analysis/rta_analysis.nit

index 000510e..0d219c4 100644 (file)
@@ -135,7 +135,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 +143,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