]> Cypherpunks repositories - gostls13.git/commitdiff
encoding/json: call reflect.TypeOf with nil pointers rather than allocating
authorTim Cooper <tim.cooper@layeh.com>
Tue, 19 Jun 2018 15:34:17 +0000 (12:34 -0300)
committerBrad Fitzpatrick <bradfitz@golang.org>
Tue, 21 Aug 2018 02:38:02 +0000 (02:38 +0000)
Updates #26775

Change-Id: I83c9eeda59769d2f35e0cc98f3a8579861d5978b
Reviewed-on: https://go-review.googlesource.com/119715
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/encoding/json/decode.go
src/encoding/json/encode.go

index 0b29249218a32b037ff9f26fd617d118142d3e1d..97fee54f4ebfd857616ae9c0df6ca7e5edf2e354 100644 (file)
@@ -611,7 +611,7 @@ func (d *decodeState) array(v reflect.Value) error {
 }
 
 var nullLiteral = []byte("null")
-var textUnmarshalerType = reflect.TypeOf(new(encoding.TextUnmarshaler)).Elem()
+var textUnmarshalerType = reflect.TypeOf((*encoding.TextUnmarshaler)(nil)).Elem()
 
 // object consumes an object from d.data[d.off-1:], decoding into v.
 // The first byte ('{') of the object has been read already.
index 28ca5fe9e009f015ee160c2730b4b20c6cf69783..7ebb04c50a94940ba62aab7fd49a7d9d562987ff 100644 (file)
@@ -381,8 +381,8 @@ func typeEncoder(t reflect.Type) encoderFunc {
 }
 
 var (
-       marshalerType     = reflect.TypeOf(new(Marshaler)).Elem()
-       textMarshalerType = reflect.TypeOf(new(encoding.TextMarshaler)).Elem()
+       marshalerType     = reflect.TypeOf((*Marshaler)(nil)).Elem()
+       textMarshalerType = reflect.TypeOf((*encoding.TextMarshaler)(nil)).Elem()
 )
 
 // newTypeEncoder constructs an encoderFunc for a type.