diff options
author | Luke Shumaker <lukeshu@lukeshu.com> | 2023-01-27 01:59:27 -0700 |
---|---|---|
committer | Luke Shumaker <lukeshu@lukeshu.com> | 2023-02-10 21:49:02 -0700 |
commit | a8d2fdc1ae082f350c221dbea0cfc9065a6ef2c0 (patch) | |
tree | 0487ec52bf7cb482a10f283afdb94baed77b0894 | |
parent | 95180a90db47990d32104ff7ab103e4862fd8426 (diff) |
decode: Rewrite .scan() to avoid making a new scanner
-rw-r--r-- | decode.go | 9 |
1 files changed, 5 insertions, 4 deletions
@@ -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) { |