compiler: --erasure use `virtual_runtime_function` instead of hard-building names
authorJean Privat <jean@pryen.org>
Fri, 16 Jan 2015 10:41:59 +0000 (17:41 +0700)
committerJean Privat <jean@pryen.org>
Fri, 16 Jan 2015 11:47:28 +0000 (18:47 +0700)
Signed-off-by: Jean Privat <jean@pryen.org>

src/compiler/separate_erasure_compiler.nit

index 8a33265..2c90e65 100644 (file)
@@ -235,13 +235,9 @@ class SeparateErasureCompiler
                                                v.add_decl("NULL, /* DEAD {mclass.intro_mmodule}:{mclass}:{mpropdef} */")
                                                continue
                                        end
-                                       if true or mpropdef.mclassdef.bound_mtype.ctype != "val*" then
-                                               v.require_declaration("VIRTUAL_{mpropdef.c_name}")
-                                               v.add_decl("(nitmethod_t)VIRTUAL_{mpropdef.c_name}, /* pointer to {mclass.intro_mmodule}:{mclass}:{mpropdef} */")
-                                       else
-                                               v.require_declaration("{mpropdef.c_name}")
-                                               v.add_decl("(nitmethod_t){mpropdef.c_name}, /* pointer to {mclass.intro_mmodule}:{mclass}:{mpropdef} */")
-                                       end
+                                       var rf = mpropdef.virtual_runtime_function
+                                       v.require_declaration(rf.c_name)
+                                       v.add_decl("(nitmethod_t){rf.c_name}, /* pointer to {mpropdef.full_name} */")
                                end
                        end
                        v.add_decl("\}")