rename 'package' to 'module'
[nit.git] / src / compiling / compiling_global.nit
index 1dac70b..39b31c4 100644 (file)
@@ -15,7 +15,7 @@
 # limitations under the License.
 
 # Compute and generate tables for classes and modules.
-package compiling_global
+module compiling_global
 
 import table_computation
 private import compiling_icode
@@ -81,7 +81,7 @@ redef class MMModule
        # Compile sep files
        fun compile_mod_to_c(v: CompilerVisitor)
        do
-               v.add_decl("extern const char *LOCATE_{cname};")
+               v.add_decl("extern const char LOCATE_{cname}[];")
                if not v.program.tc.use_SFT_optimization then
                        v.add_decl("extern const int SFT_{cname}[];")
                end
@@ -118,7 +118,7 @@ redef class MMModule
        # Compile module file for the current module
        fun compile_local_table_to_c(v: CompilerVisitor)
        do
-               v.add_instr("const char *LOCATE_{cname} = \"{location.file}\";")
+               v.add_instr("const char LOCATE_{cname}[] = \"{location.file.filename}\";")
 
                if v.program.tc.use_SFT_optimization or local_table.is_empty then
                        return
@@ -205,6 +205,39 @@ redef class TableEltSuper
        end
 end
 
+redef class TableEltVTClassColor
+       redef fun compile_macros(v, value)
+       do
+               var pg = property.global
+               v.add_decl("#define {pg.vt_class_color}(recv) (VAL2VFT(recv)[{value}].i)")
+       end
+
+       redef fun compile_to_c(v, c)
+       do
+               var prog = v.program
+               var p = c[property.global]
+               var g = p.signature_for(c.get_type).return_type.local_class.global
+               var col = g.intro.as(MMConcreteClass).class_color_pos
+               return "{prog.table_information.color(col)} /* {prog.table_information.color(self)}: VT {c}::{p} : color of {g} */"
+       end
+end
+
+redef class TableEltVTClassId
+       redef fun compile_macros(v, value)
+       do
+               var pg = property.global
+               v.add_decl("#define {pg.vt_class_id}(recv) (VAL2VFT(recv)[{value}].i)")
+       end
+
+       redef fun compile_to_c(v, c)
+       do
+               var prog = v.program
+               var p = c[property.global]
+               var g = p.signature_for(c.get_type).return_type.local_class.global
+               return "{prog.compiled_classes[g].id} /* {prog.table_information.color(self)}: VT {c}::{p} : id of {g} */"
+       end
+end
+
 redef class TableEltAttr
        redef fun compile_macros(v, value)
        do
@@ -220,6 +253,7 @@ redef class TableEltAttr
        end
 end
 
+
 redef class AbsTableEltClass
        # The C macro name refering the value
        fun symbol: String is abstract
@@ -283,6 +317,14 @@ redef class TableEltClassSelfId
        end
 end
 
+redef class TableEltClassSelfName
+       redef fun compile_to_c(v, c)
+       do
+               var prog = v.program
+               return "\"{c.global.name}\" /* {prog.table_information.color(self)}: Class Name */"
+       end
+end
+
 redef class TableEltClassObjectSize
        redef fun compile_to_c(v, c)
        do