compile: generate classes init iroutines sooner to insert global analysis
[nit.git] / src / nitc.nit
index eef3c56..c0d3133 100644 (file)
@@ -19,6 +19,7 @@ package nitc
 
 import abstracttool
 import analysis
+import program
 private import compiling
 private import syntax
 
@@ -66,10 +67,10 @@ special AbstractCompiler
                if clibdir == null then
                        var dir = once ("NIT_DIR".to_symbol).environ
                        if dir.is_empty then 
-                               var dir = "{sys.program_name.dirname}/../lib"
+                               dir = "{sys.program_name.dirname}/../clib"
                                if dir.file_exists then clibdir = dir
                        else
-                               dir = "{dir}/lib"
+                               dir = "{dir}/clib"
                                if dir.file_exists then clibdir = dir
                        end
                        if clibdir == null then
@@ -81,7 +82,7 @@ special AbstractCompiler
                if bindir == null then
                        var dir = once ("NIT_DIR".to_symbol).environ
                        if dir.is_empty then 
-                               var dir = "{sys.program_name.dirname}/../bin"
+                               dir = "{sys.program_name.dirname}/../bin"
                                if dir.file_exists then bindir = dir
                        else
                                dir = "{dir}/bin"
@@ -110,7 +111,7 @@ special AbstractCompiler
                                        var icd = new ICodeDumper
                                        routine.dump(icd)
                                        print "**** OPTIMIZE {p.full_name} ****"
-                                       routine.optimize
+                                       routine.optimize(mod)
                                        icd = new ICodeDumper
                                        routine.dump(icd)
                                end
@@ -124,9 +125,11 @@ special AbstractCompiler
                        dump_intermediate_code(mods)
                end
                for mod in mods do
-                       mod.compile_prog_to_c(self)
+                       var p = new Program(mod)
+                       p.do_table_computation(self)
+                       p.generate_classes_init_to_icode
+                       p.compile_prog_to_c(self)
                end
-
        end
 end