summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2010-06-10 11:55:38 -0400
committerRich Hickey <richhickey@gmail.com>2010-06-10 11:55:38 -0400
commit46da5404db05389df5acdb3de2401fbad3d203b3 (patch)
tree0ad0aa2043d263d12cb3e453e73551c86e465843
parent27d9f6af56549a04c772cfba8eebc8310deaec0c (diff)
eliminate reflection in chunk* and other core calls
-rw-r--r--src/clj/clojure/core.clj18
1 files changed, 9 insertions, 9 deletions
diff --git a/src/clj/clojure/core.clj b/src/clj/clojure/core.clj
index 445387a0..faa8fac0 100644
--- a/src/clj/clojure/core.clj
+++ b/src/clj/clojure/core.clj
@@ -488,15 +488,15 @@
{:tag String
:added "1.0"
:static true}
- ([] "")
- ([^Object x]
+ (^String [] "")
+ (^String [^Object x]
(if (nil? x) "" (. x (toString))))
- ([x & ys]
+ (^String [x & ys]
((fn [^StringBuilder sb more]
(if more
(recur (. sb (append (str (first more)))) (next more))
(str sb)))
- (new StringBuilder ^String (str x)) ys)))
+ (new StringBuilder (str x)) ys)))
(defn symbol?
@@ -607,7 +607,7 @@
[& body]
(list 'new 'clojure.lang.LazySeq (list* '^{:once true} fn* [] body)))
-(defn ^:static chunk-buffer [capacity]
+(defn ^:static chunk-buffer ^clojure.lang.ChunkBuffer [capacity]
(clojure.lang.ChunkBuffer. capacity))
(defn ^:static chunk-append [^clojure.lang.ChunkBuffer b x]
@@ -616,13 +616,13 @@
(defn ^:static chunk [^clojure.lang.ChunkBuffer b]
(.chunk b))
-(defn ^:static chunk-first [^clojure.lang.IChunkedSeq s]
+(defn ^:static chunk-first ^clojure.lang.IChunk [^clojure.lang.IChunkedSeq s]
(.chunkedFirst s))
-(defn ^:static chunk-rest [^clojure.lang.IChunkedSeq s]
+(defn ^:static chunk-rest ^clojure.lang.ISeq [^clojure.lang.IChunkedSeq s]
(.chunkedMore s))
-(defn ^:static chunk-next [^clojure.lang.IChunkedSeq s]
+(defn ^:static chunk-next ^clojure.lang.ISeq [^clojure.lang.IChunkedSeq s]
(.chunkedNext s))
(defn ^:static chunk-cons [chunk rest]
@@ -5899,7 +5899,7 @@
"Return a random permutation of coll"
{:added "1.2"
:static true}
- [coll]
+ [^java.util.Collection coll]
(let [al (java.util.ArrayList. coll)]
(java.util.Collections/shuffle al)
(clojure.lang.RT/vector (.toArray al))))