Turn on the table-driven parser by default, as it is no longer experimental.

This parser reduces binary code size between 1% and 20%, particularly of debug and sanitized builds, while improving aggregate performance.

Micro benchmarks may regress, but large system performance improves.

PiperOrigin-RevId: 531505892
pull/12778/head
Protobuf Team Bot 2 years ago committed by Copybara-Service
parent 56d1b0f3f5
commit c3e2efe70b
  1. 2
      src/google/protobuf/compiler/cpp/options.h
  2. 505
      src/google/protobuf/compiler/plugin.pb.cc
  3. 9
      src/google/protobuf/compiler/plugin.pb.h
  4. 4132
      src/google/protobuf/descriptor.pb.cc
  5. 57
      src/google/protobuf/descriptor.pb.h

@ -67,7 +67,7 @@ struct Options {
std::string annotation_guard_name; std::string annotation_guard_name;
FieldListenerOptions field_listener_options; FieldListenerOptions field_listener_options;
EnforceOptimizeMode enforce_mode = EnforceOptimizeMode::kNoEnforcement; EnforceOptimizeMode enforce_mode = EnforceOptimizeMode::kNoEnforcement;
enum { kTCTableNever, kTCTableAlways } tctable_mode = kTCTableNever; enum { kTCTableNever, kTCTableAlways } tctable_mode = kTCTableAlways;
int num_cc_files = 0; int num_cc_files = 0;
bool safe_boundary_check = false; bool safe_boundary_check = false;
bool proto_h = false; bool proto_h = false;

@ -11,6 +11,7 @@
#include "google/protobuf/generated_message_reflection.h" #include "google/protobuf/generated_message_reflection.h"
#include "google/protobuf/reflection_ops.h" #include "google/protobuf/reflection_ops.h"
#include "google/protobuf/wire_format.h" #include "google/protobuf/wire_format.h"
#include "google/protobuf/generated_message_tctable_impl.h"
// @@protoc_insertion_point(includes) // @@protoc_insertion_point(includes)
// Must be included last. // Must be included last.
@ -18,6 +19,7 @@
PROTOBUF_PRAGMA_INIT_SEG PROTOBUF_PRAGMA_INIT_SEG
namespace _pb = ::google::protobuf; namespace _pb = ::google::protobuf;
namespace _pbi = ::google::protobuf::internal; namespace _pbi = ::google::protobuf::internal;
namespace _fl = ::google::protobuf::internal::field_layout;
namespace google { namespace google {
namespace protobuf { namespace protobuf {
namespace compiler { namespace compiler {
@ -394,79 +396,63 @@ PROTOBUF_NOINLINE void Version::Clear() {
_internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
} }
const char* Version::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) { const char* Version::_InternalParse(
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure const char* ptr, ::_pbi::ParseContext* ctx) {
_Internal::HasBits has_bits{}; ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header);
while (!ctx->Done(&ptr)) { return ptr;
::uint32_t tag; }
ptr = ::_pbi::ReadTag(ptr, &tag);
switch (tag >> 3) {
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
const ::_pbi::TcParseTable<2, 4, 0, 47, 2> Version::_table_ = {
{
PROTOBUF_FIELD_OFFSET(Version, _impl_._has_bits_),
0, // no _extensions_
4, 24, // max_field_number, fast_idx_mask
offsetof(decltype(_table_), field_lookup_table),
4294967280, // skipmap
offsetof(decltype(_table_), field_entries),
4, // num_field_entries
0, // num_aux_entries
offsetof(decltype(_table_), field_names), // no aux_entries
&_Version_default_instance_._instance,
::_pbi::TcParser::GenericFallback, // fallback
}, {{
// optional string suffix = 4;
{::_pbi::TcParser::FastSS1,
{34, 0, 0, PROTOBUF_FIELD_OFFSET(Version, _impl_.suffix_)}},
// optional int32 major = 1; // optional int32 major = 1;
case 1: {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Version, _impl_.major_), 1>(),
if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 8)) { {8, 1, 0, PROTOBUF_FIELD_OFFSET(Version, _impl_.major_)}},
_Internal::set_has_major(&has_bits);
_impl_.major_ = ::google::protobuf::internal::ReadVarint32(&ptr);
CHK_(ptr);
} else {
goto handle_unusual;
}
continue;
// optional int32 minor = 2; // optional int32 minor = 2;
case 2: {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Version, _impl_.minor_), 2>(),
if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 16)) { {16, 2, 0, PROTOBUF_FIELD_OFFSET(Version, _impl_.minor_)}},
_Internal::set_has_minor(&has_bits);
_impl_.minor_ = ::google::protobuf::internal::ReadVarint32(&ptr);
CHK_(ptr);
} else {
goto handle_unusual;
}
continue;
// optional int32 patch = 3; // optional int32 patch = 3;
case 3: {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(Version, _impl_.patch_), 3>(),
if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 24)) { {24, 3, 0, PROTOBUF_FIELD_OFFSET(Version, _impl_.patch_)}},
_Internal::set_has_patch(&has_bits); }}, {{
_impl_.patch_ = ::google::protobuf::internal::ReadVarint32(&ptr); 65535, 65535
CHK_(ptr); }}, {{
} else { // optional int32 major = 1;
goto handle_unusual; {PROTOBUF_FIELD_OFFSET(Version, _impl_.major_), _Internal::kHasBitsOffset + 1, 0,
} (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
continue; // optional int32 minor = 2;
{PROTOBUF_FIELD_OFFSET(Version, _impl_.minor_), _Internal::kHasBitsOffset + 2, 0,
(0 | ::_fl::kFcOptional | ::_fl::kInt32)},
// optional int32 patch = 3;
{PROTOBUF_FIELD_OFFSET(Version, _impl_.patch_), _Internal::kHasBitsOffset + 3, 0,
(0 | ::_fl::kFcOptional | ::_fl::kInt32)},
// optional string suffix = 4; // optional string suffix = 4;
case 4: {PROTOBUF_FIELD_OFFSET(Version, _impl_.suffix_), _Internal::kHasBitsOffset + 0, 0,
if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 34)) { (0 | ::_fl::kFcOptional | ::_fl::kRawString | ::_fl::kRepAString)},
auto str = _internal_mutable_suffix(); }},
ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx); // no aux_entries
CHK_(ptr); {{
#ifndef NDEBUG "\40\0\0\0\6\0\0\0"
::_pbi::VerifyUTF8(str, "google.protobuf.compiler.Version.suffix"); "google.protobuf.compiler.Version"
#endif // !NDEBUG "suffix"
} else { }},
goto handle_unusual; };
}
continue;
default:
goto handle_unusual;
} // switch
handle_unusual:
if ((tag == 0) || ((tag & 7) == 4)) {
CHK_(ptr);
ctx->SetLastTag(tag);
goto message_done;
}
ptr = UnknownFieldParse(
tag,
_internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(),
ptr, ctx);
CHK_(ptr != nullptr);
} // while
message_done:
_impl_._has_bits_.Or(has_bits);
return ptr;
failure:
ptr = nullptr;
goto message_done;
#undef CHK_
}
::uint8_t* Version::_InternalSerialize( ::uint8_t* Version::_InternalSerialize(
::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const {
@ -727,90 +713,69 @@ PROTOBUF_NOINLINE void CodeGeneratorRequest::Clear() {
_internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
} }
const char* CodeGeneratorRequest::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) { const char* CodeGeneratorRequest::_InternalParse(
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure const char* ptr, ::_pbi::ParseContext* ctx) {
_Internal::HasBits has_bits{}; ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header);
while (!ctx->Done(&ptr)) { return ptr;
::uint32_t tag; }
ptr = ::_pbi::ReadTag(ptr, &tag);
switch (tag >> 3) {
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
const ::_pbi::TcParseTable<3, 4, 2, 79, 2> CodeGeneratorRequest::_table_ = {
{
PROTOBUF_FIELD_OFFSET(CodeGeneratorRequest, _impl_._has_bits_),
0, // no _extensions_
15, 56, // max_field_number, fast_idx_mask
offsetof(decltype(_table_), field_lookup_table),
4294950904, // skipmap
offsetof(decltype(_table_), field_entries),
4, // num_field_entries
2, // num_aux_entries
offsetof(decltype(_table_), aux_entries),
&_CodeGeneratorRequest_default_instance_._instance,
::_pbi::TcParser::GenericFallback, // fallback
}, {{
{::_pbi::TcParser::MiniParse, {}},
// repeated string file_to_generate = 1; // repeated string file_to_generate = 1;
case 1: {::_pbi::TcParser::FastSR1,
if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) { {10, 63, 0, PROTOBUF_FIELD_OFFSET(CodeGeneratorRequest, _impl_.file_to_generate_)}},
ptr -= 1;
do {
ptr += 1;
auto str = _internal_mutable_file_to_generate()->Add();
ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
CHK_(ptr);
#ifndef NDEBUG
::_pbi::VerifyUTF8(str, "google.protobuf.compiler.CodeGeneratorRequest.file_to_generate");
#endif // !NDEBUG
if (!ctx->DataAvailable(ptr)) break;
} while (::google::protobuf::internal::ExpectTag<10>(ptr));
} else {
goto handle_unusual;
}
continue;
// optional string parameter = 2; // optional string parameter = 2;
case 2: {::_pbi::TcParser::FastSS1,
if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) { {18, 0, 0, PROTOBUF_FIELD_OFFSET(CodeGeneratorRequest, _impl_.parameter_)}},
auto str = _internal_mutable_parameter();
ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
CHK_(ptr);
#ifndef NDEBUG
::_pbi::VerifyUTF8(str, "google.protobuf.compiler.CodeGeneratorRequest.parameter");
#endif // !NDEBUG
} else {
goto handle_unusual;
}
continue;
// optional .google.protobuf.compiler.Version compiler_version = 3; // optional .google.protobuf.compiler.Version compiler_version = 3;
case 3: {::_pbi::TcParser::FastMtS1,
if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 26)) { {26, 1, 0, PROTOBUF_FIELD_OFFSET(CodeGeneratorRequest, _impl_.compiler_version_)}},
ptr = ctx->ParseMessage(_internal_mutable_compiler_version(), ptr); {::_pbi::TcParser::MiniParse, {}},
CHK_(ptr); {::_pbi::TcParser::MiniParse, {}},
} else { {::_pbi::TcParser::MiniParse, {}},
goto handle_unusual;
}
continue;
// repeated .google.protobuf.FileDescriptorProto proto_file = 15; // repeated .google.protobuf.FileDescriptorProto proto_file = 15;
case 15: {::_pbi::TcParser::FastMtR1,
if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 122)) { {122, 63, 1, PROTOBUF_FIELD_OFFSET(CodeGeneratorRequest, _impl_.proto_file_)}},
ptr -= 1; }}, {{
do { 65535, 65535
ptr += 1; }}, {{
ptr = ctx->ParseMessage(_internal_mutable_proto_file()->Add(), ptr); // repeated string file_to_generate = 1;
CHK_(ptr); {PROTOBUF_FIELD_OFFSET(CodeGeneratorRequest, _impl_.file_to_generate_), -1, 0,
if (!ctx->DataAvailable(ptr)) break; (0 | ::_fl::kFcRepeated | ::_fl::kRawString | ::_fl::kRepSString)},
} while (::google::protobuf::internal::ExpectTag<122>(ptr)); // optional string parameter = 2;
} else { {PROTOBUF_FIELD_OFFSET(CodeGeneratorRequest, _impl_.parameter_), _Internal::kHasBitsOffset + 0, 0,
goto handle_unusual; (0 | ::_fl::kFcOptional | ::_fl::kRawString | ::_fl::kRepAString)},
} // optional .google.protobuf.compiler.Version compiler_version = 3;
continue; {PROTOBUF_FIELD_OFFSET(CodeGeneratorRequest, _impl_.compiler_version_), _Internal::kHasBitsOffset + 1, 0,
default: (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
goto handle_unusual; // repeated .google.protobuf.FileDescriptorProto proto_file = 15;
} // switch {PROTOBUF_FIELD_OFFSET(CodeGeneratorRequest, _impl_.proto_file_), -1, 1,
handle_unusual: (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)},
if ((tag == 0) || ((tag & 7) == 4)) { }}, {{
CHK_(ptr); {::_pbi::TcParser::GetTable<::google::protobuf::compiler::Version>()},
ctx->SetLastTag(tag); {::_pbi::TcParser::GetTable<::google::protobuf::FileDescriptorProto>()},
goto message_done; }}, {{
} "\55\20\11\0\0\0\0\0"
ptr = UnknownFieldParse( "google.protobuf.compiler.CodeGeneratorRequest"
tag, "file_to_generate"
_internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(), "parameter"
ptr, ctx); }},
CHK_(ptr != nullptr); };
} // while
message_done:
_impl_._has_bits_.Or(has_bits);
return ptr;
failure:
ptr = nullptr;
goto message_done;
#undef CHK_
}
::uint8_t* CodeGeneratorRequest::_InternalSerialize( ::uint8_t* CodeGeneratorRequest::_InternalSerialize(
::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const {
@ -1105,84 +1070,65 @@ PROTOBUF_NOINLINE void CodeGeneratorResponse_File::Clear() {
_internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
} }
const char* CodeGeneratorResponse_File::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) { const char* CodeGeneratorResponse_File::_InternalParse(
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure const char* ptr, ::_pbi::ParseContext* ctx) {
_Internal::HasBits has_bits{}; ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header);
while (!ctx->Done(&ptr)) { return ptr;
::uint32_t tag; }
ptr = ::_pbi::ReadTag(ptr, &tag);
switch (tag >> 3) {
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
const ::_pbi::TcParseTable<2, 4, 1, 86, 2> CodeGeneratorResponse_File::_table_ = {
{
PROTOBUF_FIELD_OFFSET(CodeGeneratorResponse_File, _impl_._has_bits_),
0, // no _extensions_
16, 24, // max_field_number, fast_idx_mask
offsetof(decltype(_table_), field_lookup_table),
4294918140, // skipmap
offsetof(decltype(_table_), field_entries),
4, // num_field_entries
1, // num_aux_entries
offsetof(decltype(_table_), aux_entries),
&_CodeGeneratorResponse_File_default_instance_._instance,
::_pbi::TcParser::GenericFallback, // fallback
}, {{
// optional .google.protobuf.GeneratedCodeInfo generated_code_info = 16;
{::_pbi::TcParser::FastMtS2,
{386, 3, 0, PROTOBUF_FIELD_OFFSET(CodeGeneratorResponse_File, _impl_.generated_code_info_)}},
// optional string name = 1; // optional string name = 1;
case 1: {::_pbi::TcParser::FastSS1,
if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) { {10, 0, 0, PROTOBUF_FIELD_OFFSET(CodeGeneratorResponse_File, _impl_.name_)}},
auto str = _internal_mutable_name();
ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
CHK_(ptr);
#ifndef NDEBUG
::_pbi::VerifyUTF8(str, "google.protobuf.compiler.CodeGeneratorResponse.File.name");
#endif // !NDEBUG
} else {
goto handle_unusual;
}
continue;
// optional string insertion_point = 2; // optional string insertion_point = 2;
case 2: {::_pbi::TcParser::FastSS1,
if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) { {18, 1, 0, PROTOBUF_FIELD_OFFSET(CodeGeneratorResponse_File, _impl_.insertion_point_)}},
auto str = _internal_mutable_insertion_point();
ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
CHK_(ptr);
#ifndef NDEBUG
::_pbi::VerifyUTF8(str, "google.protobuf.compiler.CodeGeneratorResponse.File.insertion_point");
#endif // !NDEBUG
} else {
goto handle_unusual;
}
continue;
// optional string content = 15; // optional string content = 15;
case 15: {::_pbi::TcParser::FastSS1,
if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 122)) { {122, 2, 0, PROTOBUF_FIELD_OFFSET(CodeGeneratorResponse_File, _impl_.content_)}},
auto str = _internal_mutable_content(); }}, {{
ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx); 65535, 65535
CHK_(ptr); }}, {{
#ifndef NDEBUG // optional string name = 1;
::_pbi::VerifyUTF8(str, "google.protobuf.compiler.CodeGeneratorResponse.File.content"); {PROTOBUF_FIELD_OFFSET(CodeGeneratorResponse_File, _impl_.name_), _Internal::kHasBitsOffset + 0, 0,
#endif // !NDEBUG (0 | ::_fl::kFcOptional | ::_fl::kRawString | ::_fl::kRepAString)},
} else { // optional string insertion_point = 2;
goto handle_unusual; {PROTOBUF_FIELD_OFFSET(CodeGeneratorResponse_File, _impl_.insertion_point_), _Internal::kHasBitsOffset + 1, 0,
} (0 | ::_fl::kFcOptional | ::_fl::kRawString | ::_fl::kRepAString)},
continue; // optional string content = 15;
{PROTOBUF_FIELD_OFFSET(CodeGeneratorResponse_File, _impl_.content_), _Internal::kHasBitsOffset + 2, 0,
(0 | ::_fl::kFcOptional | ::_fl::kRawString | ::_fl::kRepAString)},
// optional .google.protobuf.GeneratedCodeInfo generated_code_info = 16; // optional .google.protobuf.GeneratedCodeInfo generated_code_info = 16;
case 16: {PROTOBUF_FIELD_OFFSET(CodeGeneratorResponse_File, _impl_.generated_code_info_), _Internal::kHasBitsOffset + 3, 0,
if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 130)) { (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
ptr = ctx->ParseMessage(_internal_mutable_generated_code_info(), ptr); }}, {{
CHK_(ptr); {::_pbi::TcParser::GetTable<::google::protobuf::GeneratedCodeInfo>()},
} else { }}, {{
goto handle_unusual; "\63\4\17\7\0\0\0\0"
} "google.protobuf.compiler.CodeGeneratorResponse.File"
continue; "name"
default: "insertion_point"
goto handle_unusual; "content"
} // switch }},
handle_unusual: };
if ((tag == 0) || ((tag & 7) == 4)) {
CHK_(ptr);
ctx->SetLastTag(tag);
goto message_done;
}
ptr = UnknownFieldParse(
tag,
_internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(),
ptr, ctx);
CHK_(ptr != nullptr);
} // while
message_done:
_impl_._has_bits_.Or(has_bits);
return ptr;
failure:
ptr = nullptr;
goto message_done;
#undef CHK_
}
::uint8_t* CodeGeneratorResponse_File::_InternalSerialize( ::uint8_t* CodeGeneratorResponse_File::_InternalSerialize(
::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const {
@ -1426,73 +1372,58 @@ PROTOBUF_NOINLINE void CodeGeneratorResponse::Clear() {
_internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>(); _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
} }
const char* CodeGeneratorResponse::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) { const char* CodeGeneratorResponse::_InternalParse(
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure const char* ptr, ::_pbi::ParseContext* ctx) {
_Internal::HasBits has_bits{}; ptr = ::_pbi::TcParser::ParseLoop(this, ptr, ctx, &_table_.header);
while (!ctx->Done(&ptr)) { return ptr;
::uint32_t tag; }
ptr = ::_pbi::ReadTag(ptr, &tag);
switch (tag >> 3) {
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
const ::_pbi::TcParseTable<2, 3, 1, 60, 2> CodeGeneratorResponse::_table_ = {
{
PROTOBUF_FIELD_OFFSET(CodeGeneratorResponse, _impl_._has_bits_),
0, // no _extensions_
15, 24, // max_field_number, fast_idx_mask
offsetof(decltype(_table_), field_lookup_table),
4294950908, // skipmap
offsetof(decltype(_table_), field_entries),
3, // num_field_entries
1, // num_aux_entries
offsetof(decltype(_table_), aux_entries),
&_CodeGeneratorResponse_default_instance_._instance,
::_pbi::TcParser::GenericFallback, // fallback
}, {{
{::_pbi::TcParser::MiniParse, {}},
// optional string error = 1; // optional string error = 1;
case 1: {::_pbi::TcParser::FastSS1,
if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) { {10, 0, 0, PROTOBUF_FIELD_OFFSET(CodeGeneratorResponse, _impl_.error_)}},
auto str = _internal_mutable_error();
ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
CHK_(ptr);
#ifndef NDEBUG
::_pbi::VerifyUTF8(str, "google.protobuf.compiler.CodeGeneratorResponse.error");
#endif // !NDEBUG
} else {
goto handle_unusual;
}
continue;
// optional uint64 supported_features = 2; // optional uint64 supported_features = 2;
case 2: {::_pbi::TcParser::SingularVarintNoZag1<::uint64_t, offsetof(CodeGeneratorResponse, _impl_.supported_features_), 1>(),
if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 16)) { {16, 1, 0, PROTOBUF_FIELD_OFFSET(CodeGeneratorResponse, _impl_.supported_features_)}},
_Internal::set_has_supported_features(&has_bits);
_impl_.supported_features_ = ::google::protobuf::internal::ReadVarint64(&ptr);
CHK_(ptr);
} else {
goto handle_unusual;
}
continue;
// repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15; // repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15;
case 15: {::_pbi::TcParser::FastMtR1,
if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 122)) { {122, 63, 0, PROTOBUF_FIELD_OFFSET(CodeGeneratorResponse, _impl_.file_)}},
ptr -= 1; }}, {{
do { 65535, 65535
ptr += 1; }}, {{
ptr = ctx->ParseMessage(_internal_mutable_file()->Add(), ptr); // optional string error = 1;
CHK_(ptr); {PROTOBUF_FIELD_OFFSET(CodeGeneratorResponse, _impl_.error_), _Internal::kHasBitsOffset + 0, 0,
if (!ctx->DataAvailable(ptr)) break; (0 | ::_fl::kFcOptional | ::_fl::kRawString | ::_fl::kRepAString)},
} while (::google::protobuf::internal::ExpectTag<122>(ptr)); // optional uint64 supported_features = 2;
} else { {PROTOBUF_FIELD_OFFSET(CodeGeneratorResponse, _impl_.supported_features_), _Internal::kHasBitsOffset + 1, 0,
goto handle_unusual; (0 | ::_fl::kFcOptional | ::_fl::kUInt64)},
} // repeated .google.protobuf.compiler.CodeGeneratorResponse.File file = 15;
continue; {PROTOBUF_FIELD_OFFSET(CodeGeneratorResponse, _impl_.file_), -1, 0,
default: (0 | ::_fl::kFcRepeated | ::_fl::kMessage | ::_fl::kTvTable)},
goto handle_unusual; }}, {{
} // switch {::_pbi::TcParser::GetTable<::google::protobuf::compiler::CodeGeneratorResponse_File>()},
handle_unusual: }}, {{
if ((tag == 0) || ((tag & 7) == 4)) { "\56\5\0\0\0\0\0\0"
CHK_(ptr); "google.protobuf.compiler.CodeGeneratorResponse"
ctx->SetLastTag(tag); "error"
goto message_done; }},
} };
ptr = UnknownFieldParse(
tag,
_internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>(),
ptr, ctx);
CHK_(ptr != nullptr);
} // while
message_done:
_impl_._has_bits_.Or(has_bits);
return ptr;
failure:
ptr = nullptr;
goto message_done;
#undef CHK_
}
::uint8_t* CodeGeneratorResponse::_InternalSerialize( ::uint8_t* CodeGeneratorResponse::_InternalSerialize(
::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const { ::uint8_t* target, ::google::protobuf::io::EpsCopyOutputStream* stream) const {

@ -24,6 +24,7 @@
#include "google/protobuf/io/coded_stream.h" #include "google/protobuf/io/coded_stream.h"
#include "google/protobuf/arena.h" #include "google/protobuf/arena.h"
#include "google/protobuf/arenastring.h" #include "google/protobuf/arenastring.h"
#include "google/protobuf/generated_message_tctable_decl.h"
#include "google/protobuf/generated_message_util.h" #include "google/protobuf/generated_message_util.h"
#include "google/protobuf/metadata_lite.h" #include "google/protobuf/metadata_lite.h"
#include "google/protobuf/generated_message_reflection.h" #include "google/protobuf/generated_message_reflection.h"
@ -310,6 +311,8 @@ class PROTOC_EXPORT Version final :
private: private:
class _Internal; class _Internal;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<2, 4, 0, 47, 2> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;
@ -539,6 +542,8 @@ class PROTOC_EXPORT CodeGeneratorRequest final :
private: private:
class _Internal; class _Internal;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<3, 4, 2, 79, 2> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;
@ -756,6 +761,8 @@ class PROTOC_EXPORT CodeGeneratorResponse_File final :
private: private:
class _Internal; class _Internal;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<2, 4, 1, 86, 2> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;
@ -974,6 +981,8 @@ class PROTOC_EXPORT CodeGeneratorResponse final :
private: private:
class _Internal; class _Internal;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<2, 3, 1, 60, 2> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;

File diff suppressed because it is too large Load Diff

@ -24,6 +24,7 @@
#include "google/protobuf/io/coded_stream.h" #include "google/protobuf/io/coded_stream.h"
#include "google/protobuf/arena.h" #include "google/protobuf/arena.h"
#include "google/protobuf/arenastring.h" #include "google/protobuf/arenastring.h"
#include "google/protobuf/generated_message_tctable_decl.h"
#include "google/protobuf/generated_message_util.h" #include "google/protobuf/generated_message_util.h"
#include "google/protobuf/metadata_lite.h" #include "google/protobuf/metadata_lite.h"
#include "google/protobuf/generated_message_reflection.h" #include "google/protobuf/generated_message_reflection.h"
@ -673,6 +674,8 @@ class PROTOBUF_EXPORT FileDescriptorSet final :
private: private:
class _Internal; class _Internal;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<0, 1, 1, 0, 2> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;
@ -1063,6 +1066,8 @@ class PROTOBUF_EXPORT FileDescriptorProto final :
private: private:
class _Internal; class _Internal;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<4, 13, 6, 86, 2> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;
@ -1259,6 +1264,8 @@ class PROTOBUF_EXPORT DescriptorProto_ExtensionRange final :
private: private:
class _Internal; class _Internal;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<2, 3, 1, 0, 2> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;
@ -1429,6 +1436,8 @@ class PROTOBUF_EXPORT DescriptorProto_ReservedRange final :
private: private:
class _Internal; class _Internal;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<1, 2, 0, 0, 2> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;
@ -1773,6 +1782,8 @@ class PROTOBUF_EXPORT DescriptorProto final :
private: private:
class _Internal; class _Internal;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<4, 10, 8, 65, 2> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;
@ -2010,6 +2021,8 @@ class PROTOBUF_EXPORT ExtensionRangeOptions_Declaration final :
private: private:
class _Internal; class _Internal;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<3, 6, 0, 71, 2> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;
@ -2382,6 +2395,8 @@ class PROTOBUF_EXPORT ExtensionRangeOptions final :
private: private:
class _Internal; class _Internal;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<1, 3, 3, 0, 7> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;
@ -2753,6 +2768,8 @@ class PROTOBUF_EXPORT FieldDescriptorProto final :
private: private:
class _Internal; class _Internal;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<4, 11, 3, 96, 2> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;
@ -2941,6 +2958,8 @@ class PROTOBUF_EXPORT OneofDescriptorProto final :
private: private:
class _Internal; class _Internal;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<1, 2, 1, 49, 2> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;
@ -3110,6 +3129,8 @@ class PROTOBUF_EXPORT EnumDescriptorProto_EnumReservedRange final :
private: private:
class _Internal; class _Internal;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<1, 2, 0, 0, 2> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;
@ -3358,6 +3379,8 @@ class PROTOBUF_EXPORT EnumDescriptorProto final :
private: private:
class _Internal; class _Internal;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<3, 5, 3, 61, 2> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;
@ -3552,6 +3575,8 @@ class PROTOBUF_EXPORT EnumValueDescriptorProto final :
private: private:
class _Internal; class _Internal;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<2, 3, 1, 53, 2> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;
@ -3751,6 +3776,8 @@ class PROTOBUF_EXPORT ServiceDescriptorProto final :
private: private:
class _Internal; class _Internal;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<2, 3, 2, 51, 2> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;
@ -3991,6 +4018,8 @@ class PROTOBUF_EXPORT MethodDescriptorProto final :
private: private:
class _Internal; class _Internal;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<3, 6, 1, 71, 2> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;
@ -4631,6 +4660,8 @@ class PROTOBUF_EXPORT FileOptions final :
private: private:
class _Internal; class _Internal;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<5, 21, 2, 202, 12> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;
@ -5027,6 +5058,8 @@ class PROTOBUF_EXPORT MessageOptions final :
private: private:
class _Internal; class _Internal;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<3, 6, 1, 0, 7> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;
@ -5579,6 +5612,8 @@ class PROTOBUF_EXPORT FieldOptions final :
private: private:
class _Internal; class _Internal;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<4, 12, 6, 0, 7> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;
@ -5906,6 +5941,8 @@ class PROTOBUF_EXPORT OneofOptions final :
private: private:
class _Internal; class _Internal;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<0, 1, 1, 0, 7> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;
@ -6257,6 +6294,8 @@ class PROTOBUF_EXPORT EnumOptions final :
private: private:
class _Internal; class _Internal;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<3, 4, 1, 0, 7> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;
@ -6588,6 +6627,8 @@ class PROTOBUF_EXPORT EnumValueOptions final :
private: private:
class _Internal; class _Internal;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<2, 2, 1, 0, 7> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;
@ -6917,6 +6958,8 @@ class PROTOBUF_EXPORT ServiceOptions final :
private: private:
class _Internal; class _Internal;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<2, 2, 1, 0, 12> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;
@ -7279,6 +7322,8 @@ class PROTOBUF_EXPORT MethodOptions final :
private: private:
class _Internal; class _Internal;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<2, 3, 2, 0, 12> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;
@ -7460,6 +7505,8 @@ class PROTOBUF_EXPORT UninterpretedOption_NamePart final :
// helper for ByteSizeLong() // helper for ByteSizeLong()
::size_t RequiredFieldsByteSizeFallback() const; ::size_t RequiredFieldsByteSizeFallback() const;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<1, 2, 0, 62, 2> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;
@ -7716,6 +7763,8 @@ class PROTOBUF_EXPORT UninterpretedOption final :
private: private:
class _Internal; class _Internal;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<3, 7, 1, 75, 2> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;
@ -7969,6 +8018,8 @@ class PROTOBUF_EXPORT SourceCodeInfo_Location final :
private: private:
class _Internal; class _Internal;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<3, 5, 0, 106, 2> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;
@ -8140,6 +8191,8 @@ class PROTOBUF_EXPORT SourceCodeInfo final :
private: private:
class _Internal; class _Internal;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<0, 1, 1, 0, 2> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;
@ -8377,6 +8430,8 @@ class PROTOBUF_EXPORT GeneratedCodeInfo_Annotation final :
private: private:
class _Internal; class _Internal;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<3, 5, 1, 64, 2> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;
@ -8547,6 +8602,8 @@ class PROTOBUF_EXPORT GeneratedCodeInfo final :
private: private:
class _Internal; class _Internal;
friend class ::google::protobuf::internal::TcParser;
static const ::google::protobuf::internal::TcParseTable<0, 1, 1, 0, 2> _table_;
template <typename T> friend class ::google::protobuf::Arena::InternalHelper; template <typename T> friend class ::google::protobuf::Arena::InternalHelper;
typedef void InternalArenaConstructable_; typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_; typedef void DestructorSkippable_;

Loading…
Cancel
Save