Skip to content

Commit fa1d607

Browse files
committed
fix ryml-buf
1 parent 6ec1d10 commit fa1d607

1 file changed

Lines changed: 10 additions & 10 deletions

File tree

core/src/yamlscript/parser.clj

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
(:import
1212
(java.util Optional)
1313
(java.nio ByteBuffer)
14+
(java.nio IntBuffer)
1415
(java.nio.charset StandardCharsets)
1516
(org.rapidyaml Evt Rapidyaml)
1617
(org.snakeyaml.engine.v2.api LoadSettings)
@@ -240,26 +241,25 @@
240241
(let [parser ^Rapidyaml (new Rapidyaml)
241242
_ (when TIMER
242243
(.timingEnabled parser true))
243-
srcbytes (.getBytes yaml-string StandardCharsets/UTF_8)
244-
srcbuffer (ByteBuffer/allocateDirect (alength srcbytes))
244+
srcbytes ^"[B" (.getBytes yaml-string StandardCharsets/UTF_8)
245+
srcbuffer ^ByteBuffer (ByteBuffer/allocateDirect (alength srcbytes))
245246
_ (.put srcbuffer srcbytes)
246-
masks (Rapidyaml/mkIntBuffer 5)
247+
masks ^IntBuffer (Rapidyaml/mkIntBuffer 5)
247248
needed (.parseYsToEvtBuf parser srcbuffer masks)
249+
_ (.position srcbuffer 0)
248250
_ (.put srcbuffer srcbytes)
249-
masks (Rapidyaml/mkIntBuffer needed)
251+
masks ^IntBuffer (Rapidyaml/mkIntBuffer needed)
250252
_ (.parseYsToEvtBuf parser srcbuffer masks)
251-
;; TODO: aget slow?
252-
;; https://stackoverflow.com/questions/10133094/clojure-why-is-aget-so-slow
253253
get-str (fn [i]
254-
(let [off (aget masks (inc i))
255-
len (aget masks (+ i 2))]
254+
(let [off (.get masks (inc i))
255+
len (.get masks (+ i 2))]
256256
(reduce
257-
(fn [slice i] (str slice (char (aget srcbuffer i))))
257+
(fn [slice i] (str slice (char (.get srcbuffer i))))
258258
"" (range off (+ off len)))))]
259259

260260
(loop [i 0, tag nil, anchor nil, events []]
261261
(if (< i needed)
262-
(let [mask (aget masks i)
262+
(let [mask (.get masks i)
263263
type (event-type mask)
264264
; _ (WWW (Integer/toString mask 2) type)
265265
sval (when (flag? HAS_STR mask) (get-str i))

0 commit comments

Comments
 (0)