@@ -224,18 +224,22 @@ nil if the end of stream has been reached")
224224
225225(defn read-delimited-list
226226 [delim rdr recursive?]
227- (loop [a (transient [] )]
227+ (loop [a (array )]
228228 (let [ch (read-past whitespace? rdr)]
229229 (when-not ch (reader-error rdr " EOF while reading" ))
230230 (if (identical? delim ch)
231- ( persistent! a)
231+ a
232232 (if-let [macrofn (macros ch)]
233233 (let [mret (macrofn rdr ch)]
234- (recur (if (identical? mret rdr) a (conj! a mret))))
234+ (recur (if (identical? mret rdr) a (do
235+ (.push a mret)
236+ a))))
235237 (do
236238 (unread rdr ch)
237239 (let [o (read rdr true nil recursive?)]
238- (recur (if (identical? o rdr) a (conj! a o))))))))))
240+ (recur (if (identical? o rdr) a (do
241+ (.push a o)
242+ a))))))))))
239243
240244; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
241245; ; data structure readers
@@ -263,23 +267,27 @@ nil if the end of stream has been reached")
263267
264268(defn read-list
265269 [rdr _]
266- (apply list (read-delimited-list " )" rdr true )))
270+ (let [arr (read-delimited-list " )" rdr true )]
271+ (loop [i (alength arr) ^not-native r ()]
272+ (if (> i 0 )
273+ (recur (dec i) (-conj r (aget arr (dec i))))
274+ r))))
267275
268276(def read-comment skip-line )
269277
270278(defn read-vector
271279 [rdr _]
272- (read-delimited-list " ]" rdr true ))
280+ (vec ( read-delimited-list " ]" rdr true ) ))
273281
274282(defn read-map
275283 [rdr _]
276284 (let [l (read-delimited-list " }" rdr true )
277- c (count l)]
285+ c (alength l)]
278286 (when (odd? c)
279287 (reader-error rdr " Map literal must contain an even number of forms" ))
280288 (if (<= c (* 2 (.-HASHMAP-THRESHOLD PersistentArrayMap)))
281- (apply array-map l )
282- (apply hash-map l ))))
289+ (.fromArray PersistentArrayMap l true true )
290+ (.fromArray PersistentHashMap l true ))))
283291
284292(defn read-number
285293 [reader initch]
@@ -398,7 +406,7 @@ nil if the end of stream has been reached")
398406
399407(defn read-set
400408 [rdr _]
401- (set (read-delimited-list " }" rdr true )))
409+ (.fromArray PersistentHashSet (read-delimited-list " }" rdr true ) true ))
402410
403411(defn read-regex
404412 [rdr ch]
0 commit comments