stdlib/strings: Abstracted hash (breaks hash on Buffer temporarily)
[nit.git] / src / global_compiler.nit
index b25c934..9549107 100644 (file)
@@ -247,6 +247,8 @@ class GlobalCompiler
        do
                self.header.add_decl("struct nitni_instance \{ val *value; \};")
        end
+
+       redef fun supports_ffi do return true
 end
 
 # A visitor on the AST of property definition that generate the C code.
@@ -382,7 +384,7 @@ class GlobalCompilerVisitor
                                        self.add("{res} = 1; /* {args[1].inspect} cannot be null */")
                                end
                        else
-                               self.add_abort("Reciever is null")
+                               self.add_abort("Receiver is null")
                        end
                        self.add "\} else"
                end
@@ -454,11 +456,7 @@ class GlobalCompilerVisitor
        # Finalizes a call to a method ´m´ on type ´recvtype´ with arguments ´args´
        private fun finalize_call(m: MMethodDef, recvtype: MClassType, args: Array[RuntimeVariable]): nullable RuntimeVariable
        do
-               if args.length != m.msignature.arity + 1 then # because of self
-                       add("printf(\"NOT YET IMPLEMENTED: Invalid arity for {m}. {args.length} arguments given.\\n\"); show_backtrace(1);")
-                       debug("NOT YET IMPLEMENTED: Invalid arity for {m}. {args.length} arguments given.")
-                       return null
-               end
+               assert args.length == m.msignature.arity + 1 else debug("Invalid arity for {m}. {args.length} arguments given.")
 
                var rm = new CustomizedRuntimeFunction(m, recvtype)
                return rm.call(self, args)
@@ -706,10 +704,7 @@ class GlobalCompilerVisitor
        redef fun type_test(value, mtype, tag)
        do
                mtype = self.anchor(mtype)
-               var mclasstype = mtype
-               if mtype isa MNullableType then mclasstype = mtype.mtype
-               assert mclasstype isa MClassType
-               if not self.compiler.runtime_type_analysis.live_cast_types.has(mclasstype) then
+               if not self.compiler.runtime_type_analysis.live_cast_types.has(mtype) then
                        debug "problem: {mtype} was detected cast-dead"
                        abort
                end
@@ -909,8 +904,8 @@ private class CustomizedRuntimeFunction
                var frame = new Frame(v, mmethoddef, recv, arguments)
                v.frame = frame
 
-               var sig = new Buffer
-               var comment = new Buffer
+               var sig = new FlatBuffer
+               var comment = new FlatBuffer
                var ret = mmethoddef.msignature.return_mtype
                if ret != null then
                        ret = v.resolve_for(ret, selfvar)