remove necessity to create array when deserializing

This commit is contained in:
Kristin Rutenkolk 2024-12-29 11:32:31 +01:00
parent ab8cc0c859
commit 18f5699f3a

View file

@ -1868,18 +1868,30 @@
(if (= array-copy-method :loop) (if (= array-copy-method :loop)
(let [a (gensym 'array)] (let [a (gensym 'array)]
(concat (if raw?
`(let [~a (~(coffitype->array-fn array-type) ~n)]) (concat
[(list `dotimes ['m n] `(let [~a (~(coffitype->array-fn array-type) ~n)])
(list `aset a 'm (generate-deserialize array-type `(+ ~offset (* ~(size-of array-type) ~'m)) segment-source-form)))] [(list `dotimes ['m n]
[(if raw? a `(vec ~a))])) (list `aset a 'm (generate-deserialize array-type `(+ ~offset (* ~(size-of array-type) ~'m)) segment-source-form)))]
(let [a (gensym 'array)] [(if raw? a `(vec ~a))])
(concat (list `loop ['i 0 'v (list `transient [])]
`(let [~a (~(coffitype->array-fn array-type) ~n)]) (list `if (list `< 'i n)
(map (list `recur (list `unchecked-inc 'i) (list `conj! 'v (generate-deserialize array-type `(+ ~offset (* ~(size-of array-type) ~'i)) segment-source-form)))
#(list `aset a % (generate-deserialize array-type (+ offset (* (size-of array-type) %)) segment-source-form)) (list `persistent! 'v)))
(range n)) ))
[(if raw? a `(vec ~a))]))))) (if raw?
(let [a (gensym 'array)]
(concat
`(let [~a (~(coffitype->array-fn array-type) ~n)])
(map
#(list `aset a % (generate-deserialize array-type (+ offset (* (size-of array-type) %)) segment-source-form))
(range n))
[(if raw? a `(vec ~a))]))
(vec
(map
#(generate-deserialize array-type (+ offset (* (size-of array-type) %)) segment-source-form)
(range n)))
))))
(defn- typelist [typename fields] (defn- typelist [typename fields]
(->> (->>