protobuf-go/reflect
Damien Neil c5060d2fe6 reflect/protoreflect: add non-allocating Value constructors
Passing a non-pointer type to protoreflect.NewValue causes an
unnecessary allocation in order to store the value in an interface{}.
While this allocation could be avoided by a smarter compiler, no such
compiler exists today.

Add functions for creating new values of a specific type, avoiding the
allocation. (And also adding a small amount of type safety, although
this is unlikely to be important.)

Update the proto and internal/impl packages to use these functions.

Change-Id: Ic733de22ddf19c530189166c853348e1b54b7391
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/191457
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2019-08-26 17:48:05 +00:00
..
protodesc all: rename tag and flags for legacy support 2019-08-08 20:49:00 +00:00
protoreflect reflect/protoreflect: add non-allocating Value constructors 2019-08-26 17:48:05 +00:00
protoregistry all: unify protoV1.ExtensionDesc and proto.ExtensionType 2019-08-20 21:32:57 +00:00