]> Cypherpunks repositories - gostls13.git/commitdiff
json: remove old optimization that inlining covers now
authorBrad Fitzpatrick <bradfitz@golang.org>
Mon, 30 Jan 2012 19:42:09 +0000 (11:42 -0800)
committerBrad Fitzpatrick <bradfitz@golang.org>
Mon, 30 Jan 2012 19:42:09 +0000 (11:42 -0800)
Benchmarks look the same.

R=golang-dev, dsymonds, rsc
CC=golang-dev
https://golang.org/cl/5572080

src/pkg/encoding/json/scanner.go

index 2661f410e015e138553a696a18360623e5697a83..054b6b3d564e1dbc7d96ee19276fd150f69c83a9 100644 (file)
@@ -185,18 +185,9 @@ func isSpace(c rune) bool {
        return c == ' ' || c == '\t' || c == '\r' || c == '\n'
 }
 
-// NOTE(rsc): The various instances of
-//
-//     if c <= ' ' && (c == ' ' || c == '\t' || c == '\r' || c == '\n')
-//
-// below should all be if c <= ' ' && isSpace(c), but inlining
-// the checks makes a significant difference (>10%) in tight loops
-// such as nextValue.  These should be rewritten with the clearer
-// function call once 6g knows to inline the call.
-
 // stateBeginValueOrEmpty is the state after reading `[`.
 func stateBeginValueOrEmpty(s *scanner, c int) int {
-       if c <= ' ' && (c == ' ' || c == '\t' || c == '\r' || c == '\n') {
+       if c <= ' ' && isSpace(rune(c)) {
                return scanSkipSpace
        }
        if c == ']' {
@@ -207,7 +198,7 @@ func stateBeginValueOrEmpty(s *scanner, c int) int {
 
 // stateBeginValue is the state at the beginning of the input.
 func stateBeginValue(s *scanner, c int) int {
-       if c <= ' ' && (c == ' ' || c == '\t' || c == '\r' || c == '\n') {
+       if c <= ' ' && isSpace(rune(c)) {
                return scanSkipSpace
        }
        switch c {
@@ -247,7 +238,7 @@ func stateBeginValue(s *scanner, c int) int {
 
 // stateBeginStringOrEmpty is the state after reading `{`.
 func stateBeginStringOrEmpty(s *scanner, c int) int {
-       if c <= ' ' && (c == ' ' || c == '\t' || c == '\r' || c == '\n') {
+       if c <= ' ' && isSpace(rune(c)) {
                return scanSkipSpace
        }
        if c == '}' {
@@ -260,7 +251,7 @@ func stateBeginStringOrEmpty(s *scanner, c int) int {
 
 // stateBeginString is the state after reading `{"key": value,`.
 func stateBeginString(s *scanner, c int) int {
-       if c <= ' ' && (c == ' ' || c == '\t' || c == '\r' || c == '\n') {
+       if c <= ' ' && isSpace(rune(c)) {
                return scanSkipSpace
        }
        if c == '"' {
@@ -280,7 +271,7 @@ func stateEndValue(s *scanner, c int) int {
                s.endTop = true
                return stateEndTop(s, c)
        }
-       if c <= ' ' && (c == ' ' || c == '\t' || c == '\r' || c == '\n') {
+       if c <= ' ' && isSpace(rune(c)) {
                s.step = stateEndValue
                return scanSkipSpace
        }