X-Git-Url: http://nitlanguage.org diff --git a/src/compiler/separate_erasure_compiler.nit b/src/compiler/separate_erasure_compiler.nit index d1c67e5..b8b2c0a 100644 --- a/src/compiler/separate_erasure_compiler.nit +++ b/src/compiler/separate_erasure_compiler.nit @@ -204,7 +204,7 @@ class SeparateErasureCompiler var rta = runtime_type_analysis 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 + if not is_dead and rta != null and not rta.live_classes.has(mclass) and not mtype.is_c_primitive and mclass.name != "NativeArray" then is_dead = true end @@ -263,7 +263,7 @@ class SeparateErasureCompiler v.add_decl("\}") v.add_decl("\};") - if mtype.ctype != "val*" or mtype.mclass.name == "Pointer" then + if mtype.is_c_primitive or mtype.mclass.name == "Pointer" then #Build instance struct self.header.add_decl("struct instance_{c_name} \{") self.header.add_decl("const struct class *class;") @@ -535,7 +535,7 @@ class SeparateErasureCompilerVisitor end var class_ptr - if value.mtype.ctype == "val*" then + if not value.mtype.is_c_primitive then class_ptr = "{value}->class->" else var mclass = value.mtype.as(MClassType).mclass @@ -554,7 +554,7 @@ class SeparateErasureCompilerVisitor else if mtype isa MVirtualType then var recv = self.frame.arguments.first var recv_ptr - if recv.mtype.ctype == "val*" then + if not recv.mtype.is_c_primitive then recv_ptr = "{recv}->class->" else var mclass = recv.mtype.as(MClassType).mclass @@ -638,7 +638,7 @@ class SeparateErasureCompilerVisitor do var res = self.get_name("var_class_name") self.add_decl("const char* {res};") - if value.mtype.ctype == "val*" then + if not value.mtype.is_c_primitive then self.add "{res} = {value} == NULL ? \"null\" : {value}->class->name;" else self.require_declaration("class_{value.mtype.c_name}") @@ -649,7 +649,7 @@ class SeparateErasureCompilerVisitor redef fun native_array_instance(elttype, length) do - var nclass = self.get_class("NativeArray") + var nclass = mmodule.native_array_class var mtype = nclass.get_mtype([elttype]) var res = self.new_var(mtype) res.is_exact = true