aboutsummaryrefslogtreecommitdiff
path: root/libgo/go/encoding/json/stream.go
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2019-09-06 18:12:46 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2019-09-06 18:12:46 +0000
commitaa8901e9bb0399d2c16f988ba2fe46eb0c0c5d13 (patch)
tree7e63b06d1eec92beec6997c9d3ab47a5d6a835be /libgo/go/encoding/json/stream.go
parent920ea3b8ba3164b61ac9490dfdfceb6936eda6dd (diff)
downloadgcc-aa8901e9bb0399d2c16f988ba2fe46eb0c0c5d13.zip
gcc-aa8901e9bb0399d2c16f988ba2fe46eb0c0c5d13.tar.gz
gcc-aa8901e9bb0399d2c16f988ba2fe46eb0c0c5d13.tar.bz2
libgo: update to Go 1.13beta1 release
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/193497 From-SVN: r275473
Diffstat (limited to 'libgo/go/encoding/json/stream.go')
-rw-r--r--libgo/go/encoding/json/stream.go12
1 files changed, 7 insertions, 5 deletions
diff --git a/libgo/go/encoding/json/stream.go b/libgo/go/encoding/json/stream.go
index 7d5137f..e291274 100644
--- a/libgo/go/encoding/json/stream.go
+++ b/libgo/go/encoding/json/stream.go
@@ -92,20 +92,23 @@ func (dec *Decoder) readValue() (int, error) {
scanp := dec.scanp
var err error
Input:
- for {
+ // help the compiler see that scanp is never negative, so it can remove
+ // some bounds checks below.
+ for scanp >= 0 {
+
// Look in the buffer for a new value.
- for i, c := range dec.buf[scanp:] {
+ for ; scanp < len(dec.buf); scanp++ {
+ c := dec.buf[scanp]
dec.scan.bytes++
switch dec.scan.step(&dec.scan, c) {
case scanEnd:
- scanp += i
break Input
case scanEndObject, scanEndArray:
// scanEnd is delayed one byte.
// We might block trying to get that byte from src,
// so instead invent a space byte.
if stateEndValue(&dec.scan, ' ') == scanEnd {
- scanp += i + 1
+ scanp++
break Input
}
case scanError:
@@ -113,7 +116,6 @@ Input:
return 0, dec.scan.err
}
}
- scanp = len(dec.buf)
// Did the last read have an error?
// Delayed until now to allow buffer scan.