icode: closures are generated within a ICodeBuilder
authorJean Privat <jean@pryen.org>
Mon, 10 Aug 2009 17:07:26 +0000 (13:07 -0400)
committerJean Privat <jean@pryen.org>
Mon, 17 Aug 2009 18:56:54 +0000 (14:56 -0400)
Signed-off-by: Jean Privat <jean@pryen.org>

src/icode/icode_builder.nit
src/syntax/icode_generation.nit

index 2d75813..c7cfe59 100644 (file)
@@ -235,16 +235,16 @@ redef class MMSignature
        end
 
        # Create an empty IClosureDef that match the signature
-       fun generate_empty_iclosuredef: IClosureDef
+       fun generate_empty_iclosuredef(icb: ICodeBuilder): IClosureDef
        do
                var args = new Array[IRegister]
                for i in [0..arity[ do
-                       args.add(new IRegister(self[i]))
+                       args.add(icb.new_register(self[i]))
                end
                var res: nullable IRegister = null
                var rtype = return_type
                if rtype != null then
-                       res = new IRegister(rtype)
+                       res = icb.new_register(rtype)
                end
                var iroutine = new IClosureDef(args, res)
                var clos: nullable Array[IClosureDecl] = null
index e84d03b..9477f2d 100644 (file)
@@ -340,7 +340,7 @@ redef class AClosureDecl
        redef fun accept_icode_generation(vv)
        do
                var v = vv.icode_ctx
-               var iclos = variable.closure.signature.generate_empty_iclosuredef
+               var iclos = variable.closure.signature.generate_empty_iclosuredef(v)
                var old_seq = v.seq
                v.seq = iclos.body
                escapable.continue_seq = iclos.body