@@ -811,12 +811,7 @@ genWrapper (desc, tag) = ret ++ " " ++ wrapperName tag ++ "(" ++
811 indent 1 ++ "RESERVE(" ++ show (len + 1) ++ ");\n" ++
811 indent 1 ++ "RESERVE(" ++ show (len + 1) ++ ");\n" ++
812 indent 1 ++ "allocCon(REG1, vm, " ++ show tag ++ ",0 , 0);\n" ++
812 indent 1 ++ "allocCon(REG1, vm, " ++ show tag ++ ",0 , 0);\n" ++
813 indent 1 ++ "TOP(0) = REG1;\n" ++
813 indent 1 ++ "TOP(0) = REG1;\n" ++
815− push 1 argList ++
814+ applyArgs argList ++
816− indent 1 ++ "STOREOLD;\n" ++
817− indent 1 ++ "BASETOP(0);\n" ++
818− indent 1 ++ "ADDTOP(" ++ show (len + 1) ++ ");\n" ++
819− indent 1 ++ "CALL(_idris__123_APPLY0_125_);\n" ++
820 if ret /= "void"
815 if ret /= "void"
821 then indent 1 ++ "ret = " ++ irts_c (toFType ft) "RVAL" ++ ";\n"
816 then indent 1 ++ "ret = " ++ irts_c (toFType ft) "RVAL" ++ ";\n"
822 ++ indent 1 ++ "return ret;\n}\n\n"
817 ++ indent 1 ++ "return ret;\n}\n\n"
@@ -825,6 +820,19 @@ genWrapper (desc, tag) = ret ++ " " ++ wrapperName tag ++ "(" ++
825 (ret, ft) = rty desc
820 (ret, ft) = rty desc
826 argList = zip (args desc) [0..]
821 argList = zip (args desc) [0..]
827 len = length argList
822 len = length argList
824+ applyArgs (x:y:xs) = push 1 [x] ++
825+ indent 1 ++ "STOREOLD;\n" ++
826+ indent 1 ++ "BASETOP(0);\n" ++
827+ indent 1 ++ "ADDTOP(2);\n" ++
828+ indent 1 ++ "CALL(_idris__123_APPLY0_125_);\n" ++
829+ indent 1 ++ "TOP(0)=REG1;\n" ++
831+ applyArgs x = push 1 x ++
832+ indent 1 ++ "STOREOLD;\n" ++
833+ indent 1 ++ "BASETOP(0);\n" ++
834+ indent 1 ++ "ADDTOP(" ++ show (length x + 1) ++ ");\n" ++
835+ indent 1 ++ "CALL(_idris__123_APPLY0_125_);\n"
828 renderArgs [] = "void"
836 renderArgs [] = "void"
829 renderArgs [((s, _), n)] = s ++ " a" ++ (show n)
837 renderArgs [((s, _), n)] = s ++ " a" ++ (show n)
830 renderArgs (((s, _), n):xs) = s ++ " a" ++ (show n) ++ ", " ++
838 renderArgs (((s, _), n):xs) = s ++ " a" ++ (show n) ++ ", " ++