var compiler = new SeparateErasureCompiler(mainmodule, self, runtime_type_analysis)
compiler.compile_header
+ var c_name = mainmodule.c_name
+
# compile class structures
self.toolcontext.info("Property coloring", 2)
- compiler.new_file("{mainmodule.name}.tables")
+ compiler.new_file("{c_name}.tables")
compiler.do_property_coloring
for m in mainmodule.in_importation.greaters do
for mclass in m.intro_mclasses do
compiler.compile_color_consts(compiler.vt_colors)
# The main function of the C
- compiler.new_file("{mainmodule.name}.main")
+ compiler.new_file("{c_name}.main")
compiler.compile_nitni_global_ref_functions
compiler.compile_main_function
# compile methods
for m in mainmodule.in_importation.greaters do
- self.toolcontext.info("Generate C for module {m}", 2)
- compiler.new_file("{m.name}.sep")
+ self.toolcontext.info("Generate C for module {m.full_name}", 2)
+ compiler.new_file("{m.c_name}.sep")
compiler.compile_module_to_c(m)
end
class SeparateErasureCompiler
super SeparateCompiler
- private var class_ids: Map[MClass, Int]
- private var class_colors: Map[MClass, Int]
- protected var vt_colors: Map[MVirtualTypeProp, Int]
+ private var class_ids: Map[MClass, Int] is noinit
+ private var class_colors: Map[MClass, Int] is noinit
+ protected var vt_colors: Map[MVirtualTypeProp, Int] is noinit
- init(mainmodule: MModule, mmbuilder: ModelBuilder, runtime_type_analysis: nullable RapidTypeAnalysis) do
- super
+ init do
# Class coloring
var poset = mainmodule.flatten_mclass_hierarchy
var v = self.new_visitor
var rta = runtime_type_analysis
- var is_dead = mclass.kind == abstract_kind or mclass.kind == interface_kind
+ var is_dead = false # mclass.kind == abstract_kind or mclass.kind == interface_kind
if not is_dead and rta != null and not rta.live_classes.has(mclass) and mtype.ctype == "val*" and mclass.name != "NativeArray" then
is_dead = true
end
# Stats
- private var class_tables: Map[MClass, Array[nullable MClass]]
- private var vt_tables: Map[MClass, Array[nullable MPropDef]]
+ private var class_tables: Map[MClass, Array[nullable MClass]] is noinit
+ private var vt_tables: Map[MClass, Array[nullable MPropDef]] is noinit
redef fun display_sizes
do