internal/impl: inline some small varint decoding
Inline decoding of 1- and 2-byte varints in generated unmarshal
functions.
name old time/op new time/op delta
EmptyMessage/Wire/Unmarshal 40.2ns ± 2% 40.1ns ± 1% ~ (p=0.355 n=37+37)
EmptyMessage/Wire/Unmarshal-12 7.12ns ± 1% 6.87ns ± 1% -3.49% (p=0.000 n=37+39)
RepeatedInt32/Wire/Unmarshal 6.46µs ± 1% 5.78µs ± 1% -10.65% (p=0.000 n=35+33)
RepeatedInt32/Wire/Unmarshal-12 1.05µs ± 2% 0.98µs ± 2% -6.79% (p=0.000 n=33+40)
Required/Wire/Unmarshal 251ns ± 1% 216ns ± 1% -13.69% (p=0.000 n=38+36)
Required/Wire/Unmarshal-12 42.4ns ± 1% 37.7ns ± 2% -11.02% (p=0.000 n=37+39)
Change-Id: Iecfc38fcae00979b89a093368821cca7f2357578
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/216421
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
diff --git a/internal/cmd/generate-types/impl.go b/internal/cmd/generate-types/impl.go
index a72b43f..737f84b 100644
--- a/internal/cmd/generate-types/impl.go
+++ b/internal/cmd/generate-types/impl.go
@@ -70,9 +70,21 @@
{{- define "Consume" -}}
{{- if eq .Name "String" -}}
-wire.ConsumeString(b)
+v, n := wire.ConsumeString(b)
+{{- else if eq .WireType "Varint" -}}
+var v uint64
+var n int
+if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+} else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+} else {
+ v, n = wire.ConsumeVarint(b)
+}
{{- else -}}
-wire.Consume{{.WireType}}(b)
+v, n := wire.Consume{{.WireType}}(b)
{{- end -}}
{{- end -}}
@@ -100,7 +112,7 @@
if wtyp != {{.WireType.Expr}} {
return out, errUnknown
}
- v, n := {{template "Consume" .}}
+ {{template "Consume" .}}
if n < 0 {
return out, wire.ParseError(n)
}
@@ -132,7 +144,7 @@
if wtyp != {{.WireType.Expr}} {
return out, errUnknown
}
- v, n := {{template "Consume" .}}
+ {{template "Consume" .}}
if n < 0 {
return out, wire.ParseError(n)
}
@@ -180,7 +192,7 @@
if wtyp != {{.WireType.Expr}} {
return out, errUnknown
}
- v, n := {{template "Consume" .}}
+ {{template "Consume" .}}
if n < 0 {
return out, wire.ParseError(n)
}
@@ -218,7 +230,7 @@
if wtyp != {{.WireType.Expr}} {
return out, errUnknown
}
- v, n := {{template "Consume" .}}
+ {{template "Consume" .}}
if n < 0 {
return out, wire.ParseError(n)
}
@@ -262,7 +274,7 @@
if wtyp != {{.WireType.Expr}} {
return out, errUnknown
}
- v, n := {{template "Consume" .}}
+ {{template "Consume" .}}
if n < 0 {
return out, wire.ParseError(n)
}
@@ -316,7 +328,7 @@
return out, wire.ParseError(n)
}
for len(b) > 0 {
- v, n := {{template "Consume" .}}
+ {{template "Consume" .}}
if n < 0 {
return out, wire.ParseError(n)
}
@@ -331,7 +343,7 @@
if wtyp != {{.WireType.Expr}} {
return out, errUnknown
}
- v, n := {{template "Consume" .}}
+ {{template "Consume" .}}
if n < 0 {
return out, wire.ParseError(n)
}
@@ -366,7 +378,7 @@
if wtyp != {{.WireType.Expr}} {
return out, errUnknown
}
- v, n := {{template "Consume" .}}
+ {{template "Consume" .}}
if n < 0 {
return out, wire.ParseError(n)
}
@@ -452,7 +464,7 @@
if wtyp != {{.WireType.Expr}} {
return protoreflect.Value{}, out, errUnknown
}
- v, n := {{template "Consume" .}}
+ {{template "Consume" .}}
if n < 0 {
return protoreflect.Value{}, out, wire.ParseError(n)
}
@@ -482,7 +494,7 @@
if wtyp != {{.WireType.Expr}} {
return protoreflect.Value{}, out, errUnknown
}
- v, n := {{template "Consume" .}}
+ {{template "Consume" .}}
if n < 0 {
return protoreflect.Value{}, out, wire.ParseError(n)
}
@@ -535,7 +547,7 @@
return protoreflect.Value{}, out, wire.ParseError(n)
}
for len(b) > 0 {
- v, n := {{template "Consume" .}}
+ {{template "Consume" .}}
if n < 0 {
return protoreflect.Value{}, out, wire.ParseError(n)
}
@@ -549,7 +561,7 @@
if wtyp != {{.WireType.Expr}} {
return protoreflect.Value{}, out, errUnknown
}
- v, n := {{template "Consume" .}}
+ {{template "Consume" .}}
if n < 0 {
return protoreflect.Value{}, out, wire.ParseError(n)
}
diff --git a/internal/impl/codec_gen.go b/internal/impl/codec_gen.go
index 41cdb7b..79f63fb 100644
--- a/internal/impl/codec_gen.go
+++ b/internal/impl/codec_gen.go
@@ -33,7 +33,17 @@
if wtyp != wire.VarintType {
return out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return out, wire.ParseError(n)
}
@@ -97,7 +107,17 @@
if wtyp != wire.VarintType {
return out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return out, wire.ParseError(n)
}
@@ -145,7 +165,17 @@
return out, wire.ParseError(n)
}
for len(b) > 0 {
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return out, wire.ParseError(n)
}
@@ -159,7 +189,17 @@
if wtyp != wire.VarintType {
return out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return out, wire.ParseError(n)
}
@@ -228,7 +268,17 @@
if wtyp != wire.VarintType {
return protoreflect.Value{}, out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return protoreflect.Value{}, out, wire.ParseError(n)
}
@@ -272,7 +322,17 @@
return protoreflect.Value{}, out, wire.ParseError(n)
}
for len(b) > 0 {
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return protoreflect.Value{}, out, wire.ParseError(n)
}
@@ -285,7 +345,17 @@
if wtyp != wire.VarintType {
return protoreflect.Value{}, out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return protoreflect.Value{}, out, wire.ParseError(n)
}
@@ -359,7 +429,17 @@
if wtyp != wire.VarintType {
return protoreflect.Value{}, out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return protoreflect.Value{}, out, wire.ParseError(n)
}
@@ -403,7 +483,17 @@
return protoreflect.Value{}, out, wire.ParseError(n)
}
for len(b) > 0 {
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return protoreflect.Value{}, out, wire.ParseError(n)
}
@@ -416,7 +506,17 @@
if wtyp != wire.VarintType {
return protoreflect.Value{}, out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return protoreflect.Value{}, out, wire.ParseError(n)
}
@@ -492,7 +592,17 @@
if wtyp != wire.VarintType {
return out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return out, wire.ParseError(n)
}
@@ -556,7 +666,17 @@
if wtyp != wire.VarintType {
return out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return out, wire.ParseError(n)
}
@@ -604,7 +724,17 @@
return out, wire.ParseError(n)
}
for len(b) > 0 {
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return out, wire.ParseError(n)
}
@@ -618,7 +748,17 @@
if wtyp != wire.VarintType {
return out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return out, wire.ParseError(n)
}
@@ -687,7 +827,17 @@
if wtyp != wire.VarintType {
return protoreflect.Value{}, out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return protoreflect.Value{}, out, wire.ParseError(n)
}
@@ -731,7 +881,17 @@
return protoreflect.Value{}, out, wire.ParseError(n)
}
for len(b) > 0 {
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return protoreflect.Value{}, out, wire.ParseError(n)
}
@@ -744,7 +904,17 @@
if wtyp != wire.VarintType {
return protoreflect.Value{}, out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return protoreflect.Value{}, out, wire.ParseError(n)
}
@@ -820,7 +990,17 @@
if wtyp != wire.VarintType {
return out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return out, wire.ParseError(n)
}
@@ -884,7 +1064,17 @@
if wtyp != wire.VarintType {
return out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return out, wire.ParseError(n)
}
@@ -932,7 +1122,17 @@
return out, wire.ParseError(n)
}
for len(b) > 0 {
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return out, wire.ParseError(n)
}
@@ -946,7 +1146,17 @@
if wtyp != wire.VarintType {
return out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return out, wire.ParseError(n)
}
@@ -1015,7 +1225,17 @@
if wtyp != wire.VarintType {
return protoreflect.Value{}, out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return protoreflect.Value{}, out, wire.ParseError(n)
}
@@ -1059,7 +1279,17 @@
return protoreflect.Value{}, out, wire.ParseError(n)
}
for len(b) > 0 {
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return protoreflect.Value{}, out, wire.ParseError(n)
}
@@ -1072,7 +1302,17 @@
if wtyp != wire.VarintType {
return protoreflect.Value{}, out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return protoreflect.Value{}, out, wire.ParseError(n)
}
@@ -1148,7 +1388,17 @@
if wtyp != wire.VarintType {
return out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return out, wire.ParseError(n)
}
@@ -1212,7 +1462,17 @@
if wtyp != wire.VarintType {
return out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return out, wire.ParseError(n)
}
@@ -1260,7 +1520,17 @@
return out, wire.ParseError(n)
}
for len(b) > 0 {
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return out, wire.ParseError(n)
}
@@ -1274,7 +1544,17 @@
if wtyp != wire.VarintType {
return out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return out, wire.ParseError(n)
}
@@ -1343,7 +1623,17 @@
if wtyp != wire.VarintType {
return protoreflect.Value{}, out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return protoreflect.Value{}, out, wire.ParseError(n)
}
@@ -1387,7 +1677,17 @@
return protoreflect.Value{}, out, wire.ParseError(n)
}
for len(b) > 0 {
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return protoreflect.Value{}, out, wire.ParseError(n)
}
@@ -1400,7 +1700,17 @@
if wtyp != wire.VarintType {
return protoreflect.Value{}, out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return protoreflect.Value{}, out, wire.ParseError(n)
}
@@ -1476,7 +1786,17 @@
if wtyp != wire.VarintType {
return out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return out, wire.ParseError(n)
}
@@ -1540,7 +1860,17 @@
if wtyp != wire.VarintType {
return out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return out, wire.ParseError(n)
}
@@ -1588,7 +1918,17 @@
return out, wire.ParseError(n)
}
for len(b) > 0 {
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return out, wire.ParseError(n)
}
@@ -1602,7 +1942,17 @@
if wtyp != wire.VarintType {
return out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return out, wire.ParseError(n)
}
@@ -1671,7 +2021,17 @@
if wtyp != wire.VarintType {
return protoreflect.Value{}, out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return protoreflect.Value{}, out, wire.ParseError(n)
}
@@ -1715,7 +2075,17 @@
return protoreflect.Value{}, out, wire.ParseError(n)
}
for len(b) > 0 {
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return protoreflect.Value{}, out, wire.ParseError(n)
}
@@ -1728,7 +2098,17 @@
if wtyp != wire.VarintType {
return protoreflect.Value{}, out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return protoreflect.Value{}, out, wire.ParseError(n)
}
@@ -1804,7 +2184,17 @@
if wtyp != wire.VarintType {
return out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return out, wire.ParseError(n)
}
@@ -1868,7 +2258,17 @@
if wtyp != wire.VarintType {
return out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return out, wire.ParseError(n)
}
@@ -1916,7 +2316,17 @@
return out, wire.ParseError(n)
}
for len(b) > 0 {
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return out, wire.ParseError(n)
}
@@ -1930,7 +2340,17 @@
if wtyp != wire.VarintType {
return out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return out, wire.ParseError(n)
}
@@ -1999,7 +2419,17 @@
if wtyp != wire.VarintType {
return protoreflect.Value{}, out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return protoreflect.Value{}, out, wire.ParseError(n)
}
@@ -2043,7 +2473,17 @@
return protoreflect.Value{}, out, wire.ParseError(n)
}
for len(b) > 0 {
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return protoreflect.Value{}, out, wire.ParseError(n)
}
@@ -2056,7 +2496,17 @@
if wtyp != wire.VarintType {
return protoreflect.Value{}, out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return protoreflect.Value{}, out, wire.ParseError(n)
}
@@ -2132,7 +2582,17 @@
if wtyp != wire.VarintType {
return out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return out, wire.ParseError(n)
}
@@ -2196,7 +2656,17 @@
if wtyp != wire.VarintType {
return out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return out, wire.ParseError(n)
}
@@ -2244,7 +2714,17 @@
return out, wire.ParseError(n)
}
for len(b) > 0 {
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return out, wire.ParseError(n)
}
@@ -2258,7 +2738,17 @@
if wtyp != wire.VarintType {
return out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return out, wire.ParseError(n)
}
@@ -2327,7 +2817,17 @@
if wtyp != wire.VarintType {
return protoreflect.Value{}, out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return protoreflect.Value{}, out, wire.ParseError(n)
}
@@ -2371,7 +2871,17 @@
return protoreflect.Value{}, out, wire.ParseError(n)
}
for len(b) > 0 {
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return protoreflect.Value{}, out, wire.ParseError(n)
}
@@ -2384,7 +2894,17 @@
if wtyp != wire.VarintType {
return protoreflect.Value{}, out, errUnknown
}
- v, n := wire.ConsumeVarint(b)
+ var v uint64
+ var n int
+ if len(b) >= 1 && b[0] < 0x80 {
+ v = uint64(b[0])
+ n = 1
+ } else if len(b) >= 2 && b[1] < 128 {
+ v = uint64(b[0]&0x7f) + uint64(b[1])<<7
+ n = 2
+ } else {
+ v, n = wire.ConsumeVarint(b)
+ }
if n < 0 {
return protoreflect.Value{}, out, wire.ParseError(n)
}