generated_message_tctable_lite.cc
Go to the documentation of this file.
1 // Protocol Buffers - Google's data interchange format
2 // Copyright 2008 Google Inc. All rights reserved.
3 // https://developers.google.com/protocol-buffers/
4 //
5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are
7 // met:
8 //
9 // * Redistributions of source code must retain the above copyright
10 // notice, this list of conditions and the following disclaimer.
11 // * Redistributions in binary form must reproduce the above
12 // copyright notice, this list of conditions and the following disclaimer
13 // in the documentation and/or other materials provided with the
14 // distribution.
15 // * Neither the name of Google Inc. nor the names of its
16 // contributors may be used to endorse or promote products derived from
17 // this software without specific prior written permission.
18 //
19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 
31 #include <cstdint>
32 
33 #include <google/protobuf/parse_context.h>
34 #include <google/protobuf/extension_set.h>
37 #include <google/protobuf/message_lite.h>
38 #include <google/protobuf/wire_format_lite.h>
39 
40 // clang-format off
41 #include <google/protobuf/port_def.inc>
42 // clang-format on
43 
44 namespace google {
45 namespace protobuf {
46 namespace internal {
47 
48 #ifndef NDEBUG
49 template void AlignFail<4>(uintptr_t);
50 template void AlignFail<8>(uintptr_t);
51 #endif
52 
53 const char* TcParser::GenericFallbackLite(PROTOBUF_TC_PARAM_DECL) {
54  return GenericFallbackImpl<MessageLite, std::string>(PROTOBUF_TC_PARAM_PASS);
55 }
56 
57 namespace {
58 
59 // Offset returns the address `offset` bytes after `base`.
60 inline void* Offset(void* base, uint32_t offset) {
61  return static_cast<uint8_t*>(base) + offset;
62 }
63 
64 // InvertPacked changes tag bits from the given wire type to length
65 // delimited. This is the difference expected between packed and non-packed
66 // repeated fields.
67 template <WireFormatLite::WireType Wt>
68 inline PROTOBUF_ALWAYS_INLINE void InvertPacked(TcFieldData& data) {
70 }
71 
72 } // namespace
73 
75 // Fixed fields
77 
78 template <typename LayoutType, typename TagType>
79 const char* TcParser::SingularFixed(PROTOBUF_TC_PARAM_DECL) {
80  if (PROTOBUF_PREDICT_FALSE(data.coded_tag<TagType>() != 0)) {
81  return table->fallback(PROTOBUF_TC_PARAM_PASS);
82  }
83  ptr += sizeof(TagType); // Consume tag
84  hasbits |= (uint64_t{1} << data.hasbit_idx());
85  std::memcpy(Offset(msg, data.offset()), ptr, sizeof(LayoutType));
86  ptr += sizeof(LayoutType);
87  PROTOBUF_MUSTTAIL return ToTagDispatch(PROTOBUF_TC_PARAM_PASS);
88 }
89 
90 template <typename LayoutType, typename TagType>
91 const char* TcParser::RepeatedFixed(PROTOBUF_TC_PARAM_DECL) {
92  if (PROTOBUF_PREDICT_FALSE(data.coded_tag<TagType>() != 0)) {
93  // Check if the field can be parsed as packed repeated:
94  constexpr WireFormatLite::WireType fallback_wt =
97  InvertPacked<fallback_wt>(data);
98  if (data.coded_tag<TagType>() == 0) {
99  return PackedFixed<LayoutType, TagType>(PROTOBUF_TC_PARAM_PASS);
100  } else {
101  return table->fallback(PROTOBUF_TC_PARAM_PASS);
102  }
103  }
104  auto& field = RefAt<RepeatedField<LayoutType>>(msg, data.offset());
105  int idx = field.size();
106  auto elem = field.Add();
107  int space = field.Capacity() - idx;
108  idx = 0;
109  auto expected_tag = UnalignedLoad<TagType>(ptr);
110  do {
111  ptr += sizeof(TagType);
112  std::memcpy(elem + (idx++), ptr, sizeof(LayoutType));
113  ptr += sizeof(LayoutType);
114  if (idx >= space) break;
115  if (!ctx->DataAvailable(ptr)) break;
116  } while (UnalignedLoad<TagType>(ptr) == expected_tag);
117  field.AddNAlreadyReserved(idx - 1);
119 }
120 
121 template <typename LayoutType, typename TagType>
122 const char* TcParser::PackedFixed(PROTOBUF_TC_PARAM_DECL) {
123  if (PROTOBUF_PREDICT_FALSE(data.coded_tag<TagType>() != 0)) {
124  // Try parsing as non-packed repeated:
125  constexpr WireFormatLite::WireType fallback_wt =
128  InvertPacked<fallback_wt>(data);
129  if (data.coded_tag<TagType>() == 0) {
130  return RepeatedFixed<LayoutType, TagType>(PROTOBUF_TC_PARAM_PASS);
131  } else {
132  return table->fallback(PROTOBUF_TC_PARAM_PASS);
133  }
134  }
135  ptr += sizeof(TagType);
136  // Since ctx->ReadPackedFixed does not use TailCall<> or Return<>, sync any
137  // pending hasbits now:
138  SyncHasbits(msg, hasbits, table);
139  auto& field = RefAt<RepeatedField<LayoutType>>(msg, data.offset());
140  int size = ReadSize(&ptr);
141  // TODO(dlj): add a tailcalling variant of ReadPackedFixed.
142  return ctx->ReadPackedFixed(ptr, size,
143  static_cast<RepeatedField<LayoutType>*>(&field));
144 }
145 
147 // Varint fields
149 
150 namespace {
151 
152 inline PROTOBUF_ALWAYS_INLINE std::pair<const char*, uint64_t>
153 Parse64FallbackPair(const char* p, int64_t res1) {
154  auto ptr = reinterpret_cast<const int8_t*>(p);
155 
156  // The algorithm relies on sign extension for each byte to set all high bits
157  // when the varint continues. It also relies on asserting all of the lower
158  // bits for each successive byte read. This allows the result to be aggregated
159  // using a bitwise AND. For example:
160  //
161  // 8 1 64 57 ... 24 17 16 9 8 1
162  // ptr[0] = 1aaa aaaa ; res1 = 1111 1111 ... 1111 1111 1111 1111 1aaa aaaa
163  // ptr[1] = 1bbb bbbb ; res2 = 1111 1111 ... 1111 1111 11bb bbbb b111 1111
164  // ptr[2] = 1ccc cccc ; res3 = 0000 0000 ... 000c cccc cc11 1111 1111 1111
165  // ---------------------------------------------
166  // res1 & res2 & res3 = 0000 0000 ... 000c cccc ccbb bbbb baaa aaaa
167  //
168  // On x86-64, a shld from a single register filled with enough 1s in the high
169  // bits can accomplish all this in one instruction. It so happens that res1
170  // has 57 high bits of ones, which is enough for the largest shift done.
171  GOOGLE_DCHECK_EQ(res1 >> 7, -1);
172  uint64_t ones = res1; // save the high 1 bits from res1 (input to SHLD)
173  uint64_t byte; // the "next" 7-bit chunk, shifted (result from SHLD)
174  int64_t res2, res3; // accumulated result chunks
175 #define SHLD(n) byte = ((byte << (n * 7)) | (ones >> (64 - (n * 7))))
176 
177  int sign_bit;
178 #if defined(__GCC_ASM_FLAG_OUTPUTS__) && defined(__x86_64__)
179  // For the first two rounds (ptr[1] and ptr[2]), micro benchmarks show a
180  // substantial improvement from capturing the sign from the condition code
181  // register on x86-64.
182 #define SHLD_SIGN(n) \
183  asm("shldq %3, %2, %1" \
184  : "=@ccs"(sign_bit), "+r"(byte) \
185  : "r"(ones), "i"(n * 7))
186 #else
187  // Generic fallback:
188 #define SHLD_SIGN(n) \
189  do { \
190  SHLD(n); \
191  sign_bit = static_cast<int64_t>(byte) < 0; \
192  } while (0)
193 #endif
194 
195  byte = ptr[1];
196  SHLD_SIGN(1);
197  res2 = byte;
198  if (!sign_bit) goto done2;
199  byte = ptr[2];
200  SHLD_SIGN(2);
201  res3 = byte;
202  if (!sign_bit) goto done3;
203 
204 #undef SHLD_SIGN
205 
206  // For the remainder of the chunks, check the sign of the AND result.
207  byte = ptr[3];
208  SHLD(3);
209  res1 &= byte;
210  if (res1 >= 0) goto done4;
211  byte = ptr[4];
212  SHLD(4);
213  res2 &= byte;
214  if (res2 >= 0) goto done5;
215  byte = ptr[5];
216  SHLD(5);
217  res3 &= byte;
218  if (res3 >= 0) goto done6;
219  byte = ptr[6];
220  SHLD(6);
221  res1 &= byte;
222  if (res1 >= 0) goto done7;
223  byte = ptr[7];
224  SHLD(7);
225  res2 &= byte;
226  if (res2 >= 0) goto done8;
227  byte = ptr[8];
228  SHLD(8);
229  res3 &= byte;
230  if (res3 >= 0) goto done9;
231 
232 #undef SHLD
233 
234  // For valid 64bit varints, the 10th byte/ptr[9] should be exactly 1. In this
235  // case, the continuation bit of ptr[8] already set the top bit of res3
236  // correctly, so all we have to do is check that the expected case is true.
237  byte = ptr[9];
238  if (PROTOBUF_PREDICT_TRUE(byte == 1)) goto done10;
239 
240  // A value of 0, however, represents an over-serialized varint. This case
241  // should not happen, but if does (say, due to a nonconforming serializer),
242  // deassert the continuation bit that came from ptr[8].
243  if (byte == 0) {
244  res3 ^= static_cast<uint64_t>(1) << 63;
245  goto done10;
246  }
247 
248  // If the 10th byte/ptr[9] itself has any other value, then it is too big to
249  // fit in 64 bits. If the continue bit is set, it is an unterminated varint.
250  return {nullptr, 0};
251 
252 #define DONE(n) done##n : return {p + n, res1 & res2 & res3};
253 done2:
254  return {p + 2, res1 & res2};
255  DONE(3)
256  DONE(4)
257  DONE(5)
258  DONE(6)
259  DONE(7)
260  DONE(8)
261  DONE(9)
262  DONE(10)
263 #undef DONE
264 }
265 
266 inline PROTOBUF_ALWAYS_INLINE const char* ParseVarint(const char* p,
267  uint64_t* value) {
268  int64_t byte = static_cast<int8_t>(*p);
269  if (PROTOBUF_PREDICT_TRUE(byte >= 0)) {
270  *value = byte;
271  return p + 1;
272  } else {
273  auto tmp = Parse64FallbackPair(p, byte);
274  if (PROTOBUF_PREDICT_TRUE(tmp.first)) *value = tmp.second;
275  return tmp.first;
276  }
277 }
278 
279 template <typename FieldType,
280  TcParser::VarintDecode = TcParser::VarintDecode::kNoConversion>
281 FieldType ZigZagDecodeHelper(uint64_t value) {
282  return static_cast<FieldType>(value);
283 }
284 
285 template <>
286 int32_t ZigZagDecodeHelper<int32_t, TcParser::VarintDecode::kZigZag>(
287  uint64_t value) {
289 }
290 
291 template <>
292 int64_t ZigZagDecodeHelper<int64_t, TcParser::VarintDecode::kZigZag>(
293  uint64_t value) {
295 }
296 
297 } // namespace
298 
299 template <typename FieldType, typename TagType, TcParser::VarintDecode zigzag>
300 const char* TcParser::SingularVarint(PROTOBUF_TC_PARAM_DECL) {
301  if (PROTOBUF_PREDICT_FALSE(data.coded_tag<TagType>() != 0)) {
302  return table->fallback(PROTOBUF_TC_PARAM_PASS);
303  }
304  ptr += sizeof(TagType); // Consume tag
305  hasbits |= (uint64_t{1} << data.hasbit_idx());
306  uint64_t tmp;
307  ptr = ParseVarint(ptr, &tmp);
308  if (ptr == nullptr) {
310  }
311  RefAt<FieldType>(msg, data.offset()) =
312  ZigZagDecodeHelper<FieldType, zigzag>(tmp);
313  PROTOBUF_MUSTTAIL return ToTagDispatch(PROTOBUF_TC_PARAM_PASS);
314 }
315 
316 template <typename FieldType, typename TagType, TcParser::VarintDecode zigzag>
317 PROTOBUF_NOINLINE const char* TcParser::RepeatedVarint(PROTOBUF_TC_PARAM_DECL) {
318  if (PROTOBUF_PREDICT_FALSE(data.coded_tag<TagType>() != 0)) {
319  // Try parsing as non-packed repeated:
320  InvertPacked<WireFormatLite::WIRETYPE_VARINT>(data);
321  if (data.coded_tag<TagType>() == 0) {
322  return PackedVarint<FieldType, TagType, zigzag>(PROTOBUF_TC_PARAM_PASS);
323  } else {
324  return table->fallback(PROTOBUF_TC_PARAM_PASS);
325  }
326  }
327  auto& field = RefAt<RepeatedField<FieldType>>(msg, data.offset());
328  auto expected_tag = UnalignedLoad<TagType>(ptr);
329  do {
330  ptr += sizeof(TagType);
331  uint64_t tmp;
332  ptr = ParseVarint(ptr, &tmp);
333  if (ptr == nullptr) {
335  }
336  field.Add(ZigZagDecodeHelper<FieldType, zigzag>(tmp));
337  if (!ctx->DataAvailable(ptr)) {
338  break;
339  }
340  } while (UnalignedLoad<TagType>(ptr) == expected_tag);
342 }
343 
344 template <typename FieldType, typename TagType, TcParser::VarintDecode zigzag>
345 PROTOBUF_NOINLINE const char* TcParser::PackedVarint(PROTOBUF_TC_PARAM_DECL) {
346  if (PROTOBUF_PREDICT_FALSE(data.coded_tag<TagType>() != 0)) {
347  InvertPacked<WireFormatLite::WIRETYPE_VARINT>(data);
348  if (data.coded_tag<TagType>() == 0) {
349  return RepeatedVarint<FieldType, TagType, zigzag>(PROTOBUF_TC_PARAM_PASS);
350  } else {
351  return table->fallback(PROTOBUF_TC_PARAM_PASS);
352  }
353  }
354  ptr += sizeof(TagType);
355  // Since ctx->ReadPackedVarint does not use TailCall or Return, sync any
356  // pending hasbits now:
357  SyncHasbits(msg, hasbits, table);
358  auto* field = &RefAt<RepeatedField<FieldType>>(msg, data.offset());
359  return ctx->ReadPackedVarint(ptr, [field](uint64_t varint) {
360  FieldType val;
361  if (zigzag) {
362  if (sizeof(FieldType) == 8) {
363  val = WireFormatLite::ZigZagDecode64(varint);
364  } else {
365  val = WireFormatLite::ZigZagDecode32(varint);
366  }
367  } else {
368  val = varint;
369  }
370  field->Add(val);
371  });
372 }
373 
375 // String/bytes fields
377 
378 // Defined in wire_format_lite.cc
379 void PrintUTF8ErrorLog(const char* field_name, const char* operation_str,
380  bool emit_stacktrace);
381 
382 namespace {
383 
384 PROTOBUF_NOINLINE
385 const char* SingularStringParserFallback(ArenaStringPtr* s, const char* ptr,
387  int size = ReadSize(&ptr);
388  if (!ptr) return nullptr;
389  return stream->ReadString(
390  ptr, size, s->MutableNoArenaNoDefault(&GetEmptyStringAlreadyInited()));
391 }
392 
393 } // namespace
394 
395 template <typename TagType, TcParser::Utf8Type utf8>
396 const char* TcParser::SingularString(PROTOBUF_TC_PARAM_DECL) {
397  if (PROTOBUF_PREDICT_FALSE(data.coded_tag<TagType>() != 0)) {
398  return table->fallback(PROTOBUF_TC_PARAM_PASS);
399  }
400  ptr += sizeof(TagType);
401  hasbits |= (uint64_t{1} << data.hasbit_idx());
402  auto& field = RefAt<ArenaStringPtr>(msg, data.offset());
403  auto arena = ctx->data().arena;
404  if (arena) {
405  ptr = ctx->ReadArenaString(ptr, &field, arena);
406  } else {
407  ptr = SingularStringParserFallback(&field, ptr, ctx);
408  }
409  if (ptr == nullptr) return Error(PROTOBUF_TC_PARAM_PASS);
410  switch (utf8) {
411  case kNoUtf8:
412 #ifdef NDEBUG
413  case kUtf8ValidateOnly:
414 #endif
416  default:
417  if (PROTOBUF_PREDICT_TRUE(IsStructurallyValidUTF8(field.Get()))) {
419  }
420  PrintUTF8ErrorLog("unknown", "parsing", false);
421  return utf8 == kUtf8 ? Error(PROTOBUF_TC_PARAM_PASS)
423  }
424 }
425 
426 template <typename TagType, TcParser::Utf8Type utf8>
427 const char* TcParser::RepeatedString(PROTOBUF_TC_PARAM_DECL) {
428  if (PROTOBUF_PREDICT_FALSE(data.coded_tag<TagType>() != 0)) {
429  return table->fallback(PROTOBUF_TC_PARAM_PASS);
430  }
431  auto expected_tag = UnalignedLoad<TagType>(ptr);
432  auto& field = RefAt<RepeatedPtrField<std::string>>(msg, data.offset());
433  do {
434  ptr += sizeof(TagType);
435  std::string* str = field.Add();
437  if (ptr == nullptr) {
439  }
440  if (utf8 != kNoUtf8) {
441  if (PROTOBUF_PREDICT_FALSE(!IsStructurallyValidUTF8(*str))) {
442  PrintUTF8ErrorLog("unknown", "parsing", false);
443  if (utf8 == kUtf8) return Error(PROTOBUF_TC_PARAM_PASS);
444  }
445  }
446  if (!ctx->DataAvailable(ptr)) break;
447  } while (UnalignedLoad<TagType>(ptr) == expected_tag);
449 }
450 
451 #define PROTOBUF_TCT_SOURCE
452 #include <google/protobuf/generated_message_tctable_impl.inc>
453 
454 } // namespace internal
455 } // namespace protobuf
456 } // namespace google
xds_interop_client.str
str
Definition: xds_interop_client.py:487
ptr
char * ptr
Definition: abseil-cpp/absl/base/internal/low_level_alloc_test.cc:45
google::protobuf.internal::TcParser::SingularVarint
static const char * SingularVarint(PROTOBUF_TC_PARAM_DECL)
Definition: generated_message_tctable_lite.cc:300
ctx::arena
upb_Arena * arena
Definition: conformance_upb.c:84
google::protobuf.internal::TcParser::SingularFixed
static const char * SingularFixed(PROTOBUF_TC_PARAM_DECL)
Definition: generated_message_tctable_lite.cc:79
google::protobuf.internal::EpsCopyInputStream
Definition: bloaty/third_party/protobuf/src/google/protobuf/parse_context.h:107
google::protobuf.internal::FieldType
uint8 FieldType
Definition: bloaty/third_party/protobuf/src/google/protobuf/extension_set.h:83
google::protobuf::value
const Descriptor::ReservedRange value
Definition: bloaty/third_party/protobuf/src/google/protobuf/descriptor.h:1954
google::protobuf.internal::ReadSize
uint32 ReadSize(const char **pp)
Definition: bloaty/third_party/protobuf/src/google/protobuf/parse_context.h:561
ctx
Definition: benchmark-async.c:30
google::protobuf.internal::TcParser::kUtf8ValidateOnly
@ kUtf8ValidateOnly
Definition: generated_message_tctable_impl.h:204
google::protobuf.internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED
@ WIRETYPE_LENGTH_DELIMITED
Definition: bloaty/third_party/protobuf/src/google/protobuf/wire_format_lite.h:104
SHLD_SIGN
#define SHLD_SIGN(n)
testing::internal::string
::std::string string
Definition: bloaty/third_party/protobuf/third_party/googletest/googletest/include/gtest/internal/gtest-port.h:881
elem
Timer elem
Definition: event_engine/iomgr_event_engine/timer_heap_test.cc:109
google::protobuf.internal::TcParser::PackedFixed
static const char * PackedFixed(PROTOBUF_TC_PARAM_DECL)
Definition: generated_message_tctable_lite.cc:122
google::protobuf
Definition: bloaty/third_party/protobuf/benchmarks/util/data_proto2_to_proto3_util.h:12
google::protobuf.internal::TcParser::ToParseLoop
static const PROTOBUF_ALWAYS_INLINE char * ToParseLoop(PROTOBUF_TC_PARAM_DECL)
Definition: generated_message_tctable_impl.h:233
google::protobuf::RepeatedField
Definition: bloaty/third_party/protobuf/src/google/protobuf/message.h:184
xds_manager.p
p
Definition: xds_manager.py:60
uint8_t
unsigned char uint8_t
Definition: stdint-msvc2008.h:78
google::protobuf.internal::TcParser::RepeatedFixed
static const char * RepeatedFixed(PROTOBUF_TC_PARAM_DECL)
Definition: generated_message_tctable_lite.cc:91
google::protobuf.internal::WireFormatLite::WIRETYPE_FIXED64
@ WIRETYPE_FIXED64
Definition: bloaty/third_party/protobuf/src/google/protobuf/wire_format_lite.h:103
arena
grpc_core::ScopedArenaPtr arena
Definition: binder_transport_test.cc:237
google::protobuf.internal::AlignFail< 8 >
template void AlignFail< 8 >(uintptr_t)
uint32_t
unsigned int uint32_t
Definition: stdint-msvc2008.h:80
google::protobuf.internal::TcParser::kUtf8
@ kUtf8
Definition: generated_message_tctable_impl.h:204
memcpy
memcpy(mem, inblock.get(), min(CONTAINING_RECORD(inblock.get(), MEMBLOCK, data) ->size, size))
google::protobuf.internal::TcParser::RepeatedVarint
static const char * RepeatedVarint(PROTOBUF_TC_PARAM_DECL)
int64_t
signed __int64 int64_t
Definition: stdint-msvc2008.h:89
generated_message_tctable_impl.h
absl::container_internal::internal_layout::LayoutType
LayoutImpl< std::tuple< Ts... >, absl::make_index_sequence< NumSizes >, absl::make_index_sequence< adl_barrier::Min(sizeof...(Ts), NumSizes+1)> > LayoutType
Definition: abseil-cpp/absl/container/internal/layout.h:673
google::protobuf.internal::WireFormatLite::WIRETYPE_FIXED32
@ WIRETYPE_FIXED32
Definition: bloaty/third_party/protobuf/src/google/protobuf/wire_format_lite.h:107
google::protobuf.internal::GetEmptyStringAlreadyInited
const PROTOBUF_EXPORT std::string & GetEmptyStringAlreadyInited()
Definition: bloaty/third_party/protobuf/src/google/protobuf/message_lite.h:153
uint64_t
unsigned __int64 uint64_t
Definition: stdint-msvc2008.h:90
SHLD
#define SHLD(n)
google::protobuf.internal::TcParser::kNoUtf8
@ kNoUtf8
Definition: generated_message_tctable_impl.h:204
google::protobuf.internal::TcParser::RepeatedString
static const char * RepeatedString(PROTOBUF_TC_PARAM_DECL)
Definition: generated_message_tctable_lite.cc:427
gen_synthetic_protos.base
base
Definition: gen_synthetic_protos.py:31
data
char data[kBufferLength]
Definition: abseil-cpp/absl/strings/internal/str_format/float_conversion.cc:1006
uintptr_t
_W64 unsigned int uintptr_t
Definition: stdint-msvc2008.h:119
google::protobuf.internal::InlineGreedyStringParser
const char * InlineGreedyStringParser(std::string *s, const char *ptr, ParseContext *ctx)
Definition: bloaty/third_party/protobuf/src/google/protobuf/parse_context.cc:420
setup.idx
idx
Definition: third_party/bloaty/third_party/capstone/bindings/python/setup.py:197
msg
std::string msg
Definition: client_interceptors_end2end_test.cc:372
google::protobuf.internal::PrintUTF8ErrorLog
void PrintUTF8ErrorLog(const char *field_name, const char *operation_str, bool emit_stacktrace)
Definition: bloaty/third_party/protobuf/src/google/protobuf/wire_format_lite.cc:571
google::protobuf.internal::TcParser::ToTagDispatch
static const char * ToTagDispatch(PROTOBUF_TC_PARAM_DECL)
Definition: generated_message_tctable_impl.h:132
ares::byte
unsigned char byte
Definition: ares-test.h:33
generated_message_tctable_decl.h
field
const FieldDescriptor * field
Definition: bloaty/third_party/protobuf/src/google/protobuf/compiler/parser_unittest.cc:2692
PROTOBUF_TC_PARAM_PASS
#define PROTOBUF_TC_PARAM_PASS
Definition: generated_message_tctable_impl.h:64
DONE
#define DONE(n)
google::protobuf.internal::IsStructurallyValidUTF8
PROTOBUF_EXPORT bool IsStructurallyValidUTF8(const char *buf, int len)
Definition: bloaty/third_party/protobuf/src/google/protobuf/stubs/structurally_valid.cc:556
GOOGLE_DCHECK_EQ
#define GOOGLE_DCHECK_EQ
Definition: bloaty/third_party/protobuf/src/google/protobuf/stubs/logging.h:196
google::protobuf.internal::WireFormatLite::WireType
WireType
Definition: bloaty/third_party/protobuf/src/google/protobuf/wire_format_lite.h:101
internal
Definition: benchmark/test/output_test_helper.cc:20
table
uint8_t table[256]
Definition: hpack_parser.cc:456
google::protobuf.internal::TcParser::VarintDecode
VarintDecode
Definition: generated_message_tctable_impl.h:196
int8_t
signed char int8_t
Definition: stdint-msvc2008.h:75
autogen_x86imm.tmp
tmp
Definition: autogen_x86imm.py:12
google::protobuf.internal::TcParser::SingularString
static const char * SingularString(PROTOBUF_TC_PARAM_DECL)
Definition: generated_message_tctable_lite.cc:396
google::protobuf.internal::WireFormatLite::ZigZagDecode64
static int64 ZigZagDecode64(uint64 n)
Definition: bloaty/third_party/protobuf/src/google/protobuf/wire_format_lite.h:885
size
voidpf void uLong size
Definition: bloaty/third_party/zlib/contrib/minizip/ioapi.h:136
int32_t
signed int int32_t
Definition: stdint-msvc2008.h:77
google::protobuf.internal::TcParser::GenericFallbackLite
static const char * GenericFallbackLite(PROTOBUF_TC_PARAM_DECL)
Definition: generated_message_tctable_lite.cc:53
google::protobuf.internal::TcParser::SyncHasbits
static PROTOBUF_ALWAYS_INLINE void SyncHasbits(MessageLite *msg, uint64_t hasbits, const TcParseTableBase *table)
Definition: generated_message_tctable_impl.h:222
google::protobuf.internal::WireFormatLite::ZigZagDecode32
static int32 ZigZagDecode32(uint32 n)
Definition: bloaty/third_party/protobuf/src/google/protobuf/wire_format_lite.h:874
google
Definition: bloaty/third_party/protobuf/benchmarks/util/data_proto2_to_proto3_util.h:11
google::protobuf.internal::ArenaStringPtr
Definition: bloaty/third_party/protobuf/src/google/protobuf/arenastring.h:74
google::protobuf.internal::TcParser::Error
static const PROTOBUF_ALWAYS_INLINE char * Error(PROTOBUF_TC_PARAM_DECL)
Definition: generated_message_tctable_impl.h:241
offset
voidpf uLong offset
Definition: bloaty/third_party/zlib/contrib/minizip/ioapi.h:142
google::protobuf.internal::AlignFail< 4 >
template void AlignFail< 4 >(uintptr_t)
google::protobuf.internal::TcParser::PackedVarint
static const char * PackedVarint(PROTOBUF_TC_PARAM_DECL)
stream
voidpf stream
Definition: bloaty/third_party/zlib/contrib/minizip/ioapi.h:136


grpc
Author(s):
autogenerated on Fri May 16 2025 02:58:26