summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2009-11-28 13:48:18 -0500
committerRich Hickey <richhickey@gmail.com>2009-11-28 13:48:18 -0500
commit4d98e904d2802a6630eeb4d2e5429c7e9c3fd638 (patch)
tree0cac42c790352c63fb338d356973327d722e2b3b
parent6144e64432dde85838703371dd1fb1d47e7c6e31 (diff)
added some manual locals clearing to AFn and RestFn
-rw-r--r--src/jvm/clojure/lang/AFn.java47
-rw-r--r--src/jvm/clojure/lang/RestFn.java132
-rw-r--r--src/jvm/clojure/lang/Util.java8
3 files changed, 116 insertions, 71 deletions
diff --git a/src/jvm/clojure/lang/AFn.java b/src/jvm/clojure/lang/AFn.java
index e2646ade..9a86cd2a 100644
--- a/src/jvm/clojure/lang/AFn.java
+++ b/src/jvm/clojure/lang/AFn.java
@@ -161,37 +161,40 @@ public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object
}
public Object applyTo(ISeq arglist) throws Exception{
- return applyToHelper(this, arglist);
+ return applyToHelper(this, Util.ret1(arglist,arglist = null));
}
static public Object applyToHelper(IFn ifn, ISeq arglist) throws Exception{
switch(RT.boundedLength(arglist, 20))
{
case 0:
+ arglist = null;
return ifn.invoke();
case 1:
- return ifn.invoke(arglist.first());
+ Object a1 = arglist.first();
+ arglist = null;
+ return ifn.invoke(a1);
case 2:
return ifn.invoke(arglist.first()
- , (arglist = arglist.next()).first()
+ , Util.ret1((arglist = arglist.next()).first(),arglist = null)
);
case 3:
return ifn.invoke(arglist.first()
, (arglist = arglist.next()).first()
- , (arglist = arglist.next()).first()
+ , Util.ret1((arglist = arglist.next()).first(),arglist = null)
);
case 4:
return ifn.invoke(arglist.first()
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
- , (arglist = arglist.next()).first()
+ , Util.ret1((arglist = arglist.next()).first(),arglist = null)
);
case 5:
return ifn.invoke(arglist.first()
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
- , (arglist = arglist.next()).first()
+ , Util.ret1((arglist = arglist.next()).first(),arglist = null)
);
case 6:
return ifn.invoke(arglist.first()
@@ -199,7 +202,7 @@ static public Object applyToHelper(IFn ifn, ISeq arglist) throws Exception{
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
- , (arglist = arglist.next()).first()
+ , Util.ret1((arglist = arglist.next()).first(),arglist = null)
);
case 7:
return ifn.invoke(arglist.first()
@@ -208,7 +211,7 @@ static public Object applyToHelper(IFn ifn, ISeq arglist) throws Exception{
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
- , (arglist = arglist.next()).first()
+ , Util.ret1((arglist = arglist.next()).first(),arglist = null)
);
case 8:
return ifn.invoke(arglist.first()
@@ -218,7 +221,7 @@ static public Object applyToHelper(IFn ifn, ISeq arglist) throws Exception{
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
- , (arglist = arglist.next()).first()
+ , Util.ret1((arglist = arglist.next()).first(),arglist = null)
);
case 9:
return ifn.invoke(arglist.first()
@@ -229,7 +232,7 @@ static public Object applyToHelper(IFn ifn, ISeq arglist) throws Exception{
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
- , (arglist = arglist.next()).first()
+ , Util.ret1((arglist = arglist.next()).first(),arglist = null)
);
case 10:
return ifn.invoke(arglist.first()
@@ -241,7 +244,7 @@ static public Object applyToHelper(IFn ifn, ISeq arglist) throws Exception{
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
- , (arglist = arglist.next()).first()
+ , Util.ret1((arglist = arglist.next()).first(),arglist = null)
);
case 11:
return ifn.invoke(arglist.first()
@@ -254,7 +257,7 @@ static public Object applyToHelper(IFn ifn, ISeq arglist) throws Exception{
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
- , (arglist = arglist.next()).first()
+ , Util.ret1((arglist = arglist.next()).first(),arglist = null)
);
case 12:
return ifn.invoke(arglist.first()
@@ -268,7 +271,7 @@ static public Object applyToHelper(IFn ifn, ISeq arglist) throws Exception{
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
- , (arglist = arglist.next()).first()
+ , Util.ret1((arglist = arglist.next()).first(),arglist = null)
);
case 13:
return ifn.invoke(arglist.first()
@@ -283,7 +286,7 @@ static public Object applyToHelper(IFn ifn, ISeq arglist) throws Exception{
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
- , (arglist = arglist.next()).first()
+ , Util.ret1((arglist = arglist.next()).first(),arglist = null)
);
case 14:
return ifn.invoke(arglist.first()
@@ -299,7 +302,7 @@ static public Object applyToHelper(IFn ifn, ISeq arglist) throws Exception{
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
- , (arglist = arglist.next()).first()
+ , Util.ret1((arglist = arglist.next()).first(),arglist = null)
);
case 15:
return ifn.invoke(arglist.first()
@@ -316,7 +319,7 @@ static public Object applyToHelper(IFn ifn, ISeq arglist) throws Exception{
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
- , (arglist = arglist.next()).first()
+ , Util.ret1((arglist = arglist.next()).first(),arglist = null)
);
case 16:
return ifn.invoke(arglist.first()
@@ -334,7 +337,7 @@ static public Object applyToHelper(IFn ifn, ISeq arglist) throws Exception{
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
- , (arglist = arglist.next()).first()
+ , Util.ret1((arglist = arglist.next()).first(),arglist = null)
);
case 17:
return ifn.invoke(arglist.first()
@@ -353,7 +356,7 @@ static public Object applyToHelper(IFn ifn, ISeq arglist) throws Exception{
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
- , (arglist = arglist.next()).first()
+ , Util.ret1((arglist = arglist.next()).first(),arglist = null)
);
case 18:
return ifn.invoke(arglist.first()
@@ -373,7 +376,7 @@ static public Object applyToHelper(IFn ifn, ISeq arglist) throws Exception{
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
- , (arglist = arglist.next()).first()
+ , Util.ret1((arglist = arglist.next()).first(),arglist = null)
);
case 19:
return ifn.invoke(arglist.first()
@@ -394,7 +397,7 @@ static public Object applyToHelper(IFn ifn, ISeq arglist) throws Exception{
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
- , (arglist = arglist.next()).first()
+ , Util.ret1((arglist = arglist.next()).first(),arglist = null)
);
case 20:
return ifn.invoke(arglist.first()
@@ -416,7 +419,7 @@ static public Object applyToHelper(IFn ifn, ISeq arglist) throws Exception{
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
- , (arglist = arglist.next()).first()
+ , Util.ret1((arglist = arglist.next()).first(),arglist = null)
);
default:
return ifn.invoke(arglist.first()
@@ -439,7 +442,7 @@ static public Object applyToHelper(IFn ifn, ISeq arglist) throws Exception{
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
, (arglist = arglist.next()).first()
- , RT.seqToArray(arglist.next()));
+ , RT.seqToArray(Util.ret1(arglist.next(),arglist = null)));
}
}
diff --git a/src/jvm/clojure/lang/RestFn.java b/src/jvm/clojure/lang/RestFn.java
index c0ba6262..192b5bfb 100644
--- a/src/jvm/clojure/lang/RestFn.java
+++ b/src/jvm/clojure/lang/RestFn.java
@@ -130,37 +130,37 @@ protected Object doInvoke(Object arg1, Object arg2, Object arg3, Object arg4, Ob
public Object applyTo(ISeq args) throws Exception{
if(RT.boundedLength(args, getRequiredArity()) <= getRequiredArity())
{
- return AFn.applyToHelper(this, args);
+ return AFn.applyToHelper(this, Util.ret1(args,args = null));
}
switch(getRequiredArity())
{
case 0:
- return doInvoke(args);
+ return doInvoke(Util.ret1(args,args = null));
case 1:
return doInvoke(args.first()
- , args.next());
+ , Util.ret1(args.next(),args=null));
case 2:
return doInvoke(args.first()
, (args = args.next()).first()
- , args.next());
+ , Util.ret1(args.next(),args=null));
case 3:
return doInvoke(args.first()
, (args = args.next()).first()
, (args = args.next()).first()
- , args.next());
+ , Util.ret1(args.next(),args=null));
case 4:
return doInvoke(args.first()
, (args = args.next()).first()
, (args = args.next()).first()
, (args = args.next()).first()
- , args.next());
+ , Util.ret1(args.next(),args=null));
case 5:
return doInvoke(args.first()
, (args = args.next()).first()
, (args = args.next()).first()
, (args = args.next()).first()
, (args = args.next()).first()
- , args.next());
+ , Util.ret1(args.next(),args=null));
case 6:
return doInvoke(args.first()
, (args = args.next()).first()
@@ -168,7 +168,7 @@ public Object applyTo(ISeq args) throws Exception{
, (args = args.next()).first()
, (args = args.next()).first()
, (args = args.next()).first()
- , args.next());
+ , Util.ret1(args.next(),args=null));
case 7:
return doInvoke(args.first()
, (args = args.next()).first()
@@ -177,7 +177,7 @@ public Object applyTo(ISeq args) throws Exception{
, (args = args.next()).first()
, (args = args.next()).first()
, (args = args.next()).first()
- , args.next());
+ , Util.ret1(args.next(),args=null));
case 8:
return doInvoke(args.first()
, (args = args.next()).first()
@@ -187,7 +187,7 @@ public Object applyTo(ISeq args) throws Exception{
, (args = args.next()).first()
, (args = args.next()).first()
, (args = args.next()).first()
- , args.next());
+ , Util.ret1(args.next(),args=null));
case 9:
return doInvoke(args.first()
, (args = args.next()).first()
@@ -198,7 +198,7 @@ public Object applyTo(ISeq args) throws Exception{
, (args = args.next()).first()
, (args = args.next()).first()
, (args = args.next()).first()
- , args.next());
+ , Util.ret1(args.next(),args=null));
case 10:
return doInvoke(args.first()
, (args = args.next()).first()
@@ -210,7 +210,7 @@ public Object applyTo(ISeq args) throws Exception{
, (args = args.next()).first()
, (args = args.next()).first()
, (args = args.next()).first()
- , args.next());
+ , Util.ret1(args.next(),args=null));
case 11:
return doInvoke(args.first()
, (args = args.next()).first()
@@ -223,7 +223,7 @@ public Object applyTo(ISeq args) throws Exception{
, (args = args.next()).first()
, (args = args.next()).first()
, (args = args.next()).first()
- , args.next());
+ , Util.ret1(args.next(),args=null));
case 12:
return doInvoke(args.first()
, (args = args.next()).first()
@@ -237,7 +237,7 @@ public Object applyTo(ISeq args) throws Exception{
, (args = args.next()).first()
, (args = args.next()).first()
, (args = args.next()).first()
- , args.next());
+ , Util.ret1(args.next(),args=null));
case 13:
return doInvoke(args.first()
, (args = args.next()).first()
@@ -252,7 +252,7 @@ public Object applyTo(ISeq args) throws Exception{
, (args = args.next()).first()
, (args = args.next()).first()
, (args = args.next()).first()
- , args.next());
+ , Util.ret1(args.next(),args=null));
case 14:
return doInvoke(args.first()
, (args = args.next()).first()
@@ -268,7 +268,7 @@ public Object applyTo(ISeq args) throws Exception{
, (args = args.next()).first()
, (args = args.next()).first()
, (args = args.next()).first()
- , args.next());
+ , Util.ret1(args.next(),args=null));
case 15:
return doInvoke(args.first()
, (args = args.next()).first()
@@ -285,7 +285,7 @@ public Object applyTo(ISeq args) throws Exception{
, (args = args.next()).first()
, (args = args.next()).first()
, (args = args.next()).first()
- , args.next());
+ , Util.ret1(args.next(),args=null));
case 16:
return doInvoke(args.first()
, (args = args.next()).first()
@@ -303,7 +303,7 @@ public Object applyTo(ISeq args) throws Exception{
, (args = args.next()).first()
, (args = args.next()).first()
, (args = args.next()).first()
- , args.next());
+ , Util.ret1(args.next(),args=null));
case 17:
return doInvoke(args.first()
, (args = args.next()).first()
@@ -322,7 +322,7 @@ public Object applyTo(ISeq args) throws Exception{
, (args = args.next()).first()
, (args = args.next()).first()
, (args = args.next()).first()
- , args.next());
+ , Util.ret1(args.next(),args=null));
case 18:
return doInvoke(args.first()
, (args = args.next()).first()
@@ -342,7 +342,7 @@ public Object applyTo(ISeq args) throws Exception{
, (args = args.next()).first()
, (args = args.next()).first()
, (args = args.next()).first()
- , args.next());
+ , Util.ret1(args.next(),args=null));
case 19:
return doInvoke(args.first()
, (args = args.next()).first()
@@ -363,7 +363,7 @@ public Object applyTo(ISeq args) throws Exception{
, (args = args.next()).first()
, (args = args.next()).first()
, (args = args.next()).first()
- , args.next());
+ , Util.ret1(args.next(),args=null));
case 20:
return doInvoke(args.first()
, (args = args.next()).first()
@@ -385,7 +385,7 @@ public Object applyTo(ISeq args) throws Exception{
, (args = args.next()).first()
, (args = args.next()).first()
, (args = args.next()).first()
- , args.next());
+ , Util.ret1(args.next(),args=null));
}
return throwArity();
@@ -406,9 +406,9 @@ public Object invoke(Object arg1) throws Exception{
switch(getRequiredArity())
{
case 0:
- return doInvoke(ArraySeq.create(arg1));
+ return doInvoke(ArraySeq.create(Util.ret1(arg1, arg1 = null)));
case 1:
- return doInvoke(arg1, null);
+ return doInvoke(Util.ret1(arg1, arg1 = null), null);
default:
return throwArity();
}
@@ -419,11 +419,11 @@ public Object invoke(Object arg1, Object arg2) throws Exception{
switch(getRequiredArity())
{
case 0:
- return doInvoke(ArraySeq.create(arg1, arg2));
+ return doInvoke(ArraySeq.create(Util.ret1(arg1, arg1 = null), Util.ret1(arg2, arg2 = null)));
case 1:
- return doInvoke(arg1, ArraySeq.create(arg2));
+ return doInvoke(Util.ret1(arg1, arg1 = null), ArraySeq.create(Util.ret1(arg2, arg2 = null)));
case 2:
- return doInvoke(arg1, arg2, null);
+ return doInvoke(Util.ret1(arg1, arg1 = null), Util.ret1(arg2, arg2 = null), null);
default:
return throwArity();
}
@@ -434,13 +434,17 @@ public Object invoke(Object arg1, Object arg2, Object arg3) throws Exception{
switch(getRequiredArity())
{
case 0:
- return doInvoke(ArraySeq.create(arg1, arg2, arg3));
+ return doInvoke(ArraySeq.create(Util.ret1(arg1, arg1 = null), Util.ret1(arg2, arg2 = null),
+ Util.ret1(arg3, arg3 = null)));
case 1:
- return doInvoke(arg1, ArraySeq.create(arg2, arg3));
+ return doInvoke(Util.ret1(arg1, arg1 = null),
+ ArraySeq.create(Util.ret1(arg2, arg2 = null), Util.ret1(arg3, arg3 = null)));
case 2:
- return doInvoke(arg1, arg2, ArraySeq.create(arg3));
+ return doInvoke(Util.ret1(arg1, arg1 = null), Util.ret1(arg2, arg2 = null),
+ ArraySeq.create(Util.ret1(arg3, arg3 = null)));
case 3:
- return doInvoke(arg1, arg2, arg3, null);
+ return doInvoke(Util.ret1(arg1, arg1 = null), Util.ret1(arg2, arg2 = null), Util.ret1(arg3, arg3 = null),
+ null);
default:
return throwArity();
}
@@ -451,15 +455,21 @@ public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4) throws
switch(getRequiredArity())
{
case 0:
- return doInvoke(ArraySeq.create(arg1, arg2, arg3, arg4));
+ return doInvoke(ArraySeq.create(Util.ret1(arg1, arg1 = null), Util.ret1(arg2, arg2 = null),
+ Util.ret1(arg3, arg3 = null), Util.ret1(arg4, arg4 = null)));
case 1:
- return doInvoke(arg1, ArraySeq.create(arg2, arg3, arg4));
+ return doInvoke(Util.ret1(arg1, arg1 = null),
+ ArraySeq.create(Util.ret1(arg2, arg2 = null), Util.ret1(arg3, arg3 = null),
+ Util.ret1(arg4, arg4 = null)));
case 2:
- return doInvoke(arg1, arg2, ArraySeq.create(arg3, arg4));
+ return doInvoke(Util.ret1(arg1, arg1 = null), Util.ret1(arg2, arg2 = null),
+ ArraySeq.create(Util.ret1(arg3, arg3 = null), Util.ret1(arg4, arg4 = null)));
case 3:
- return doInvoke(arg1, arg2, arg3, ArraySeq.create(arg4));
+ return doInvoke(Util.ret1(arg1, arg1 = null), Util.ret1(arg2, arg2 = null), Util.ret1(arg3, arg3 = null),
+ ArraySeq.create(Util.ret1(arg4, arg4 = null)));
case 4:
- return doInvoke(arg1, arg2, arg3, arg4, null);
+ return doInvoke(Util.ret1(arg1, arg1 = null), Util.ret1(arg2, arg2 = null), Util.ret1(arg3, arg3 = null),
+ Util.ret1(arg4, arg4 = null), null);
default:
return throwArity();
}
@@ -470,17 +480,26 @@ public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object
switch(getRequiredArity())
{
case 0:
- return doInvoke(ArraySeq.create(arg1, arg2, arg3, arg4, arg5));
+ return doInvoke(ArraySeq.create(Util.ret1(arg1, arg1 = null), Util.ret1(arg2, arg2 = null),
+ Util.ret1(arg3, arg3 = null), Util.ret1(arg4, arg4 = null),
+ Util.ret1(arg5, arg5 = null)));
case 1:
- return doInvoke(arg1, ArraySeq.create(arg2, arg3, arg4, arg5));
+ return doInvoke(Util.ret1(arg1, arg1 = null),
+ ArraySeq.create(Util.ret1(arg2, arg2 = null), Util.ret1(arg3, arg3 = null),
+ Util.ret1(arg4, arg4 = null), Util.ret1(arg5, arg5 = null)));
case 2:
- return doInvoke(arg1, arg2, ArraySeq.create(arg3, arg4, arg5));
+ return doInvoke(Util.ret1(arg1, arg1 = null), Util.ret1(arg2, arg2 = null),
+ ArraySeq.create(Util.ret1(arg3, arg3 = null), Util.ret1(arg4, arg4 = null),
+ Util.ret1(arg5, arg5 = null)));
case 3:
- return doInvoke(arg1, arg2, arg3, ArraySeq.create(arg4, arg5));
+ return doInvoke(Util.ret1(arg1, arg1 = null), Util.ret1(arg2, arg2 = null), Util.ret1(arg3, arg3 = null),
+ ArraySeq.create(Util.ret1(arg4, arg4 = null), Util.ret1(arg5, arg5 = null)));
case 4:
- return doInvoke(arg1, arg2, arg3, arg4, ArraySeq.create(arg5));
+ return doInvoke(Util.ret1(arg1, arg1 = null), Util.ret1(arg2, arg2 = null), Util.ret1(arg3, arg3 = null),
+ Util.ret1(arg4, arg4 = null), ArraySeq.create(Util.ret1(arg5, arg5 = null)));
case 5:
- return doInvoke(arg1, arg2, arg3, arg4, arg5, null);
+ return doInvoke(Util.ret1(arg1, arg1 = null), Util.ret1(arg2, arg2 = null), Util.ret1(arg3, arg3 = null),
+ Util.ret1(arg4, arg4 = null), Util.ret1(arg5, arg5 = null), null);
default:
return throwArity();
}
@@ -491,19 +510,34 @@ public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object
switch(getRequiredArity())
{
case 0:
- return doInvoke(ArraySeq.create(arg1, arg2, arg3, arg4, arg5, arg6));
+ return doInvoke(ArraySeq.create(Util.ret1(arg1, arg1 = null), Util.ret1(arg2, arg2 = null),
+ Util.ret1(arg3, arg3 = null), Util.ret1(arg4, arg4 = null),
+ Util.ret1(arg5, arg5 = null), Util.ret1(arg6, arg6 = null)));
case 1:
- return doInvoke(arg1, ArraySeq.create(arg2, arg3, arg4, arg5, arg6));
+ return doInvoke(Util.ret1(arg1, arg1 = null),
+ ArraySeq.create(Util.ret1(arg2, arg2 = null), Util.ret1(arg3, arg3 = null),
+ Util.ret1(arg4, arg4 = null), Util.ret1(arg5, arg5 = null),
+ Util.ret1(arg6, arg6 = null)));
case 2:
- return doInvoke(arg1, arg2, ArraySeq.create(arg3, arg4, arg5, arg6));
+ return doInvoke(Util.ret1(arg1, arg1 = null), Util.ret1(arg2, arg2 = null),
+ ArraySeq.create(Util.ret1(arg3, arg3 = null), Util.ret1(arg4, arg4 = null),
+ Util.ret1(arg5, arg5 = null), Util.ret1(arg6, arg6 = null)));
case 3:
- return doInvoke(arg1, arg2, arg3, ArraySeq.create(arg4, arg5, arg6));
+ return doInvoke(Util.ret1(arg1, arg1 = null), Util.ret1(arg2, arg2 = null), Util.ret1(arg3, arg3 = null),
+ ArraySeq.create(Util.ret1(arg4, arg4 = null), Util.ret1(arg5, arg5 = null),
+ Util.ret1(arg6, arg6 = null)));
case 4:
- return doInvoke(arg1, arg2, arg3, arg4, ArraySeq.create(arg5, arg6));
+ return doInvoke(Util.ret1(arg1, arg1 = null), Util.ret1(arg2, arg2 = null), Util.ret1(arg3, arg3 = null),
+ Util.ret1(arg4, arg4 = null),
+ ArraySeq.create(Util.ret1(arg5, arg5 = null), Util.ret1(arg6, arg6 = null)));
case 5:
- return doInvoke(arg1, arg2, arg3, arg4, arg5, ArraySeq.create(arg6));
+ return doInvoke(Util.ret1(arg1, arg1 = null), Util.ret1(arg2, arg2 = null), Util.ret1(arg3, arg3 = null),
+ Util.ret1(arg4, arg4 = null), Util.ret1(arg5, arg5 = null),
+ ArraySeq.create(Util.ret1(arg6, arg6 = null)));
case 6:
- return doInvoke(arg1, arg2, arg3, arg4, arg5, arg6, null);
+ return doInvoke(Util.ret1(arg1, arg1 = null), Util.ret1(arg2, arg2 = null), Util.ret1(arg3, arg3 = null),
+ Util.ret1(arg4, arg4 = null), Util.ret1(arg5, arg5 = null), Util.ret1(arg6, arg6 = null),
+ null);
default:
return throwArity();
}
diff --git a/src/jvm/clojure/lang/Util.java b/src/jvm/clojure/lang/Util.java
index 6dcdade0..16f850bb 100644
--- a/src/jvm/clojure/lang/Util.java
+++ b/src/jvm/clojure/lang/Util.java
@@ -81,4 +81,12 @@ static public boolean isInteger(Object x){
|| x instanceof BigInteger;
}
+static public Object ret1(Object ret, Object nil){
+ return ret;
+}
+
+static public ISeq ret1(ISeq ret, Object nil){
+ return ret;
+}
+
}