X-Git-Url: http://nitlanguage.org diff --git a/src/compiler/separate_erasure_compiler.nit b/src/compiler/separate_erasure_compiler.nit index 31d424b..2a7f0fa 100644 --- a/src/compiler/separate_erasure_compiler.nit +++ b/src/compiler/separate_erasure_compiler.nit @@ -206,7 +206,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 @@ -264,7 +264,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;") @@ -529,7 +529,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 @@ -548,7 +548,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 @@ -632,7 +632,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}")