all: fast-path method refactoring
Move all fast-path inputs and outputs into the Input/Output structs.
Collapse all booleans into bitfields.
Change-Id: I79ebfbac9cd1d8ef5ec17c4f955311db007391ca
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/219505
Reviewed-by: Joe Tsai <joetsai@google.com>
diff --git a/internal/impl/merge.go b/internal/impl/merge.go
index 20d9dfd..cdc4267 100644
--- a/internal/impl/merge.go
+++ b/internal/impl/merge.go
@@ -13,24 +13,24 @@
piface "google.golang.org/protobuf/runtime/protoiface"
)
-type mergeOptions piface.MergeOptions
+type mergeOptions struct{}
func (o mergeOptions) Merge(dst, src proto.Message) {
proto.Merge(dst, src)
}
// merge is protoreflect.Methods.Merge.
-func (mi *MessageInfo) merge(dst, src pref.Message, in piface.MergeInput, opts piface.MergeOptions) piface.MergeOutput {
- dp, ok := mi.getPointer(dst)
+func (mi *MessageInfo) merge(in piface.MergeInput) piface.MergeOutput {
+ dp, ok := mi.getPointer(in.Destination)
if !ok {
- return piface.MergeOutput{Merged: false}
+ return piface.MergeOutput{}
}
- sp, ok := mi.getPointer(src)
+ sp, ok := mi.getPointer(in.Source)
if !ok {
- return piface.MergeOutput{Merged: false}
+ return piface.MergeOutput{}
}
- mi.mergePointer(dp, sp, opts)
- return piface.MergeOutput{Merged: true}
+ mi.mergePointer(dp, sp, mergeOptions{})
+ return piface.MergeOutput{Flags: piface.MergeComplete}
}
func (mi *MessageInfo) mergePointer(dst, src pointer, opts mergeOptions) {