In a link-time optimisation compiler, tables are globally computed In a true separate compiler (a with dynamic loading) you cannot do this unfortnally
# Globally compile the table of the class mclass
# In a link-time optimisation compiler, tables are globally computed
# In a true separate compiler (a with dynamic loading) you cannot do this unfortnally
fun compile_class_to_c(mclass: MClass)
do
var v = new_visitor
var class_info = build_class_compilation_info(mclass)
compile_class_vft(class_info, v)
var is_already_managed = compile_class_if_universal(class_info, v)
if not is_already_managed then
compile_default_new(class_info, v)
end
end
src/compiler/separate_compiler.nit:1069,2--1081,4
redef fun compile_class_to_c(mclass: MClass)
do
var ccinfo = build_class_compilation_info(mclass)
var v = new_visitor
v.add_decl("/* runtime class {mclass.c_name} */")
self.provide_declaration("class_{mclass.c_name}", "extern const struct class class_{mclass.c_name};")
v.add_decl("extern const struct type_table type_table_{mclass.c_name};")
self.compile_class_vft(ccinfo, v)
self.compile_class_type_table(ccinfo, v)
if not self.compile_class_if_universal(ccinfo, v) then
self.compile_default_new(ccinfo, v)
end
end
src/compiler/separate_erasure_compiler.nit:421,2--433,4