summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@lukeshu.com>2023-01-27 01:59:27 -0700
committerLuke Shumaker <lukeshu@lukeshu.com>2023-02-10 21:49:02 -0700
commita8d2fdc1ae082f350c221dbea0cfc9065a6ef2c0 (patch)
tree0487ec52bf7cb482a10f283afdb94baed77b0894
parent95180a90db47990d32104ff7ab103e4862fd8426 (diff)
decode: Rewrite .scan() to avoid making a new scanner
-rw-r--r--decode.go9
1 files changed, 5 insertions, 4 deletions
diff --git a/decode.go b/decode.go
index 645f8de..2078f92 100644
--- a/decode.go
+++ b/decode.go
@@ -760,14 +760,15 @@ func (dec *Decoder) decode(val reflect.Value, nullOK bool) {
}
func (dec *Decoder) scan(out fastio.RuneWriter) {
- limiter := dec.limitingScanner()
+ dec.io.PushReadBarrier()
for {
- c, _, err := limiter.ReadRune()
- if err == io.EOF {
- return
+ c, t := dec.readRune()
+ if t == jsonparse.RuneTypeEOF {
+ break
}
_, _ = out.WriteRune(c)
}
+ dec.io.PopReadBarrier()
}
func (dec *Decoder) scanNumber(gTyp reflect.Type, out fastio.RuneWriter) {