summaryrefslogtreecommitdiff
path: root/src/jvm
diff options
context:
space:
mode:
Diffstat (limited to 'src/jvm')
-rw-r--r--src/jvm/clojure/lang/AFn.java4
-rw-r--r--src/jvm/clojure/lang/Accessor.java2
-rw-r--r--src/jvm/clojure/lang/IFn.java2
-rw-r--r--src/jvm/clojure/lang/Keyword.java2
-rw-r--r--src/jvm/clojure/lang/RT.java8
-rw-r--r--src/jvm/clojure/lang/Reflector.java18
-rw-r--r--src/jvm/clojure/lang/RestFn0.java4
-rw-r--r--src/jvm/clojure/lang/RestFn1.java4
-rw-r--r--src/jvm/clojure/lang/RestFn2.java4
-rw-r--r--src/jvm/clojure/lang/RestFn3.java4
-rw-r--r--src/jvm/clojure/lang/RestFn4.java4
-rw-r--r--src/jvm/clojure/lang/RestFn5.java4
-rw-r--r--src/jvm/clojure/lang/Var.java2
13 files changed, 35 insertions, 27 deletions
diff --git a/src/jvm/clojure/lang/AFn.java b/src/jvm/clojure/lang/AFn.java
index c543bab6..cac16066 100644
--- a/src/jvm/clojure/lang/AFn.java
+++ b/src/jvm/clojure/lang/AFn.java
@@ -45,7 +45,7 @@ public Object invoke( Object arg1, Object arg2, Object arg3, Object arg4, Object
return throwArity();
}
-public Object invoke( Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, ISeq args)
+public Object invoke( Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object... args)
throws Exception
{
return throwArity();
@@ -90,7 +90,7 @@ static public Object applyToHelper(IFn ifn, ISeq arglist) throws Exception
, (arglist = arglist.rest()).first()
, (arglist = arglist.rest()).first()
, (arglist = arglist.rest()).first()
- , arglist.rest());
+ , RT.seqToArray(arglist.rest()));
}
}
diff --git a/src/jvm/clojure/lang/Accessor.java b/src/jvm/clojure/lang/Accessor.java
index 58ec3d24..450e7633 100644
--- a/src/jvm/clojure/lang/Accessor.java
+++ b/src/jvm/clojure/lang/Accessor.java
@@ -68,7 +68,7 @@ public Object invoke( Object arg1, Object arg2, Object arg3, Object arg4, Object
return Reflector.invokeInstanceMember(memberName,arg1,arg2,arg3,arg4,arg5);
}
-public Object invoke( Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, ISeq args)
+public Object invoke( Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object... args)
throws Exception
{
return Reflector.invokeInstanceMember(memberName,arg1,arg2,arg3,arg4,arg5,args);
diff --git a/src/jvm/clojure/lang/IFn.java b/src/jvm/clojure/lang/IFn.java
index e2b6a4f5..e6f9b474 100644
--- a/src/jvm/clojure/lang/IFn.java
+++ b/src/jvm/clojure/lang/IFn.java
@@ -28,7 +28,7 @@ public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object
throws Exception;
public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5,
- ISeq args) throws Exception;
+ Object... args) throws Exception;
public Object applyTo(ISeq arglist) throws Exception;
}
diff --git a/src/jvm/clojure/lang/Keyword.java b/src/jvm/clojure/lang/Keyword.java
index d1e1edb1..0062db2f 100644
--- a/src/jvm/clojure/lang/Keyword.java
+++ b/src/jvm/clojure/lang/Keyword.java
@@ -75,7 +75,7 @@ public Object invoke( Object arg1, Object arg2, Object arg3, Object arg4, Object
return AFn.throwArity();
}
-public Object invoke( Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, ISeq args)
+public Object invoke( Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object... args)
throws Exception
{
return AFn.throwArity();
diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java
index da66e970..a9b074a7 100644
--- a/src/jvm/clojure/lang/RT.java
+++ b/src/jvm/clojure/lang/RT.java
@@ -251,6 +251,14 @@ static public Cons arrayToList(Object[] a) throws Exception {
return ret;
}
+static public Object[] seqToArray(ISeq seq) throws Exception {
+ int len = length(seq);
+ Object[] ret = new Object[len];
+ for(int i=0;seq != null;++i, seq = seq.rest())
+ ret[i] = seq.first();
+ return ret;
+}
+
static public int length(ISeq list) throws Exception {
int i = 0;
for(ISeq c = list; c != null; c = c.rest())
diff --git a/src/jvm/clojure/lang/Reflector.java b/src/jvm/clojure/lang/Reflector.java
index c4eb9d7e..13d9bcd3 100644
--- a/src/jvm/clojure/lang/Reflector.java
+++ b/src/jvm/clojure/lang/Reflector.java
@@ -167,17 +167,17 @@ public static Object invokeInstanceMember(String name, Object target, Object arg
public static Object invokeInstanceMember(String name, Object target, Object arg1, Object arg2, Object arg3,
Object arg4,
- ISeq arglist)
+ Object... args)
throws Exception
{
- Object[] args = new Object[4 + RT.length(arglist)];
- args[0] = arg1;
- args[1] = arg2;
- args[2] = arg3;
- args[3] = arg4;
- for(int i = 4; arglist != null; i++, arglist = arglist.rest())
- args[i] = arglist.first();
- return invokeInstanceMethod(name, target, args);
+ Object[] arguments = new Object[4 + args.length];
+ arguments[0] = arg1;
+ arguments[1] = arg2;
+ arguments[2] = arg3;
+ arguments[3] = arg4;
+ if(args.length > 0)
+ System.arraycopy(args, 0, arguments, 4, args.length);
+ return invokeInstanceMethod(name, target, arguments);
}
diff --git a/src/jvm/clojure/lang/RestFn0.java b/src/jvm/clojure/lang/RestFn0.java
index 914b02c2..c3d2b355 100644
--- a/src/jvm/clojure/lang/RestFn0.java
+++ b/src/jvm/clojure/lang/RestFn0.java
@@ -52,9 +52,9 @@ public Object invoke( Object arg1, Object arg2, Object arg3, Object arg4, Object
return doInvoke( RT.list(arg1, arg2, arg3, arg4, arg5));
}
-public Object invoke( Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, ISeq args)
+public Object invoke( Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object... args)
throws Exception
{
- return doInvoke( RT.listStar(arg1, arg2, arg3, arg4, arg5, args));
+ return doInvoke( RT.listStar(arg1, arg2, arg3, arg4, arg5, RT.seq(args)));
}
}
diff --git a/src/jvm/clojure/lang/RestFn1.java b/src/jvm/clojure/lang/RestFn1.java
index 3f846893..7f87d74c 100644
--- a/src/jvm/clojure/lang/RestFn1.java
+++ b/src/jvm/clojure/lang/RestFn1.java
@@ -56,10 +56,10 @@ public Object invoke( Object arg1, Object arg2, Object arg3, Object arg4, Object
return doInvoke( arg1, RT.list(arg2, arg3, arg4, arg5));
}
-public Object invoke( Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, ISeq args)
+public Object invoke( Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object... args)
throws Exception
{
- return doInvoke( arg1, RT.listStar(arg2, arg3, arg4, arg5, args));
+ return doInvoke( arg1, RT.listStar(arg2, arg3, arg4, arg5, RT.seq(args)));
}
}
diff --git a/src/jvm/clojure/lang/RestFn2.java b/src/jvm/clojure/lang/RestFn2.java
index b65bc28e..53299931 100644
--- a/src/jvm/clojure/lang/RestFn2.java
+++ b/src/jvm/clojure/lang/RestFn2.java
@@ -57,10 +57,10 @@ public Object invoke( Object arg1, Object arg2, Object arg3, Object arg4, Object
return doInvoke( arg1, arg2, RT.list(arg3, arg4, arg5));
}
-public Object invoke( Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, ISeq args)
+public Object invoke( Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object... args)
throws Exception
{
- return doInvoke( arg1, arg2, RT.listStar(arg3, arg4, arg5, args));
+ return doInvoke( arg1, arg2, RT.listStar(arg3, arg4, arg5, RT.seq(args)));
}
}
diff --git a/src/jvm/clojure/lang/RestFn3.java b/src/jvm/clojure/lang/RestFn3.java
index 7bba686d..9cdcbbb9 100644
--- a/src/jvm/clojure/lang/RestFn3.java
+++ b/src/jvm/clojure/lang/RestFn3.java
@@ -59,9 +59,9 @@ public Object invoke( Object arg1, Object arg2, Object arg3, Object arg4, Object
return doInvoke( arg1, arg2, arg3, RT.list(arg4, arg5));
}
-public Object invoke( Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, ISeq args)
+public Object invoke( Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object... args)
throws Exception
{
- return doInvoke( arg1, arg2, arg3, RT.listStar(arg4, arg5, args));
+ return doInvoke( arg1, arg2, arg3, RT.listStar(arg4, arg5, RT.seq(args)));
}
}
diff --git a/src/jvm/clojure/lang/RestFn4.java b/src/jvm/clojure/lang/RestFn4.java
index d8518d41..b65c312d 100644
--- a/src/jvm/clojure/lang/RestFn4.java
+++ b/src/jvm/clojure/lang/RestFn4.java
@@ -61,10 +61,10 @@ public Object invoke( Object arg1, Object arg2, Object arg3, Object arg4, Object
return doInvoke( arg1, arg2, arg3, arg4, RT.list(arg5));
}
-public Object invoke( Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, ISeq args)
+public Object invoke( Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object... args)
throws Exception
{
- return doInvoke( arg1, arg2, arg3, arg4, RT.listStar(arg5, args));
+ return doInvoke( arg1, arg2, arg3, arg4, RT.listStar(arg5, RT.seq(args)));
}
}
diff --git a/src/jvm/clojure/lang/RestFn5.java b/src/jvm/clojure/lang/RestFn5.java
index 52c1d3ce..257d07a3 100644
--- a/src/jvm/clojure/lang/RestFn5.java
+++ b/src/jvm/clojure/lang/RestFn5.java
@@ -65,9 +65,9 @@ public Object invoke( Object arg1, Object arg2, Object arg3, Object arg4, Object
return doInvoke( arg1, arg2, arg3, arg4, arg5, null);
}
-public Object invoke( Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, ISeq args)
+public Object invoke( Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object... args)
throws Exception
{
- return doInvoke( arg1, arg2, arg3, arg4, arg5, args);
+ return doInvoke( arg1, arg2, arg3, arg4, arg5, RT.seq(args));
}
}
diff --git a/src/jvm/clojure/lang/Var.java b/src/jvm/clojure/lang/Var.java
index afae0caa..a04c8f2a 100644
--- a/src/jvm/clojure/lang/Var.java
+++ b/src/jvm/clojure/lang/Var.java
@@ -134,7 +134,7 @@ public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object
return fn.invoke(arg1, arg2, arg3, arg4, arg5);
}
-public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, ISeq args)
+public Object invoke(Object arg1, Object arg2, Object arg3, Object arg4, Object arg5, Object... args)
throws Exception {
return fn.invoke(arg1, arg2, arg3, arg4, arg5, args);
}