From f745f2189d239572e3247d23384b0d2bc9138c8d Mon Sep 17 00:00:00 2001 From: Rich Hickey Date: Wed, 19 Sep 2007 21:19:19 +0000 Subject: refactoring --- src/boot.clj | 3 +++ src/jvm/clojure/lang/Compiler.java | 2 +- src/jvm/clojure/lang/PersistentVector.java | 4 ++-- src/jvm/clojure/lang/RT.java | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/boot.clj b/src/boot.clj index 3e82cea8..c711e27a 100644 --- a/src/boot.clj +++ b/src/boot.clj @@ -209,6 +209,9 @@ (defn pop [list] (. RT (pop list))) +(defn nth [coll index] + (. RT (nth coll index))) + ;;map stuff (defn contains [coll key] diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java index bebdede8..a9552adc 100644 --- a/src/jvm/clojure/lang/Compiler.java +++ b/src/jvm/clojure/lang/Compiler.java @@ -515,7 +515,7 @@ static abstract class HostExpr implements Expr{ m = byteValueMethod; else if(paramType == short.class) m = shortValueMethod; - gen.invokeStatic(NUMBER_TYPE, m); + gen.invokeVirtual(NUMBER_TYPE, m); } } else diff --git a/src/jvm/clojure/lang/PersistentVector.java b/src/jvm/clojure/lang/PersistentVector.java index 0f1c9d0e..d45ef2dc 100644 --- a/src/jvm/clojure/lang/PersistentVector.java +++ b/src/jvm/clojure/lang/PersistentVector.java @@ -80,9 +80,9 @@ public Object nth(int i){ public PersistentVector assocN(int i, Object val){ if(i >= 0 && i < cnt) - { return new PersistentVector(meta(), cnt, shift, doAssoc(shift, root, i, val)); - } + if(i == cnt) + return cons(val); throw new IndexOutOfBoundsException(); } diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java index 6186e973..ae46b0fb 100644 --- a/src/jvm/clojure/lang/RT.java +++ b/src/jvm/clojure/lang/RT.java @@ -320,7 +320,7 @@ static public Object dissoc(Object key, Object coll){ return ((IPersistentMap) coll).without(key); } -static public Object nth(int n, Object coll){ +static public Object nth(Object coll, int n){ if(coll == null) return null; else if(coll instanceof IPersistentVector) -- cgit v1.2.3-70-g09d2