From: Tim Cooper Date: Tue, 19 Jun 2018 15:34:17 +0000 (-0300) Subject: encoding/json: call reflect.TypeOf with nil pointers rather than allocating X-Git-Tag: go1.12beta1~1399 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=dc272a4393dc2ba5f54f9cc37670d5581b6e774f;p=gostls13.git encoding/json: call reflect.TypeOf with nil pointers rather than allocating Updates #26775 Change-Id: I83c9eeda59769d2f35e0cc98f3a8579861d5978b Reviewed-on: https://go-review.googlesource.com/119715 Reviewed-by: Brad Fitzpatrick Run-TryBot: Brad Fitzpatrick TryBot-Result: Gobot Gobot --- diff --git a/src/encoding/json/decode.go b/src/encoding/json/decode.go index 0b29249218..97fee54f4e 100644 --- a/src/encoding/json/decode.go +++ b/src/encoding/json/decode.go @@ -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. diff --git a/src/encoding/json/encode.go b/src/encoding/json/encode.go index 28ca5fe9e0..7ebb04c50a 100644 --- a/src/encoding/json/encode.go +++ b/src/encoding/json/encode.go @@ -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.