Merge pull request #6051 from haon4/201904171256
Down Integration to GitHub
diff --git a/java/core/src/main/java/com/google/protobuf/Internal.java b/java/core/src/main/java/com/google/protobuf/Internal.java
index 15deb37..0826351 100644
--- a/java/core/src/main/java/com/google/protobuf/Internal.java
+++ b/java/core/src/main/java/com/google/protobuf/Internal.java
@@ -683,4 +683,5 @@
@Override
FloatList mutableCopyWithCapacity(int capacity);
}
+
}
diff --git a/python/google/protobuf/pyext/message.cc b/python/google/protobuf/pyext/message.cc
index ae0971d..3530a9b 100644
--- a/python/google/protobuf/pyext/message.cc
+++ b/python/google/protobuf/pyext/message.cc
@@ -1041,18 +1041,21 @@
// Remove items, starting from the end.
for (; length > to; length--) {
- // If there is a living weak reference to a deleted item, we "Release" it,
- if (field_descriptor->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE &&
- self->child_submessages) {
- Message* sub_message = reflection->MutableRepeatedMessage(
- message, field_descriptor, length - 1);
- if (CMessage* released = self->MaybeReleaseSubMessage(sub_message)) {
- released->message = reflection->ReleaseLast(message, field_descriptor);
- continue;
- }
+ if (field_descriptor->cpp_type() != FieldDescriptor::CPPTYPE_MESSAGE) {
+ reflection->RemoveLast(message, field_descriptor);
+ continue;
}
- // No Python object refers to this item, discard the value.
- reflection->RemoveLast(message, field_descriptor);
+ // It seems that RemoveLast() is less efficient for sub-messages, and
+ // the memory is not completely released. Prefer ReleaseLast().
+ Message* sub_message = reflection->ReleaseLast(message, field_descriptor);
+ // If there is a live weak reference to an item being removed, we "Release"
+ // it, and it takes ownership of the message.
+ if (CMessage* released = self->MaybeReleaseSubMessage(sub_message)) {
+ released->message = sub_message;
+ } else {
+ // sub_message was not transferred, delete it.
+ delete sub_message;
+ }
}
return 0;
diff --git a/src/google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc b/src/google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc
index 373c4cb..debd9a0 100644
--- a/src/google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc
+++ b/src/google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc
@@ -132,6 +132,7 @@
const char kDescriptorParameter[] = "dllexport_decl=PROTOBUF_EXPORT";
const char kPluginParameter[] = "dllexport_decl=PROTOC_EXPORT";
+
const char* test_protos[][2] = {
{"google/protobuf/descriptor", kDescriptorParameter},
{"google/protobuf/compiler/plugin", kPluginParameter},
diff --git a/src/google/protobuf/compiler/cpp/cpp_field.cc b/src/google/protobuf/compiler/cpp/cpp_field.cc
index 7aae57d..411136f 100644
--- a/src/google/protobuf/compiler/cpp/cpp_field.cc
+++ b/src/google/protobuf/compiler/cpp/cpp_field.cc
@@ -127,9 +127,7 @@
FieldGeneratorMap::FieldGeneratorMap(const Descriptor* descriptor,
const Options& options,
MessageSCCAnalyzer* scc_analyzer)
- : descriptor_(descriptor),
- options_(options),
- field_generators_(descriptor->field_count()) {
+ : descriptor_(descriptor), field_generators_(descriptor->field_count()) {
// Construct all the FieldGenerators.
for (int i = 0; i < descriptor->field_count(); i++) {
field_generators_[i].reset(
diff --git a/src/google/protobuf/compiler/cpp/cpp_field.h b/src/google/protobuf/compiler/cpp/cpp_field.h
index 054c64b..c66bddc 100644
--- a/src/google/protobuf/compiler/cpp/cpp_field.h
+++ b/src/google/protobuf/compiler/cpp/cpp_field.h
@@ -227,7 +227,6 @@
private:
const Descriptor* descriptor_;
- const Options& options_;
std::vector<std::unique_ptr<FieldGenerator>> field_generators_;
static FieldGenerator* MakeGoogleInternalGenerator(
diff --git a/src/google/protobuf/compiler/cpp/cpp_helpers.cc b/src/google/protobuf/compiler/cpp/cpp_helpers.cc
index 17476f1..12baf1f 100644
--- a/src/google/protobuf/compiler/cpp/cpp_helpers.cc
+++ b/src/google/protobuf/compiler/cpp/cpp_helpers.cc
@@ -166,20 +166,6 @@
static std::unordered_set<std::string>& kKeywords = *MakeKeywordsMap();
-// Returns whether the provided descriptor has an extension. This includes its
-// nested types.
-bool HasExtension(const Descriptor* descriptor) {
- if (descriptor->extension_count() > 0) {
- return true;
- }
- for (int i = 0; i < descriptor->nested_type_count(); ++i) {
- if (HasExtension(descriptor->nested_type(i))) {
- return true;
- }
- }
- return false;
-}
-
// Encode [0..63] as 'A'-'Z', 'a'-'z', '0'-'9', '_'
char Base63Char(int value) {
GOOGLE_CHECK_GE(value, 0);
diff --git a/src/google/protobuf/compiler/cpp/cpp_message.cc b/src/google/protobuf/compiler/cpp/cpp_message.cc
index 99a9514..74a2440 100644
--- a/src/google/protobuf/compiler/cpp/cpp_message.cc
+++ b/src/google/protobuf/compiler/cpp/cpp_message.cc
@@ -177,8 +177,8 @@
} else if (field->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE) {
// Message fields still have has_$name$() methods.
format("if ($prefix$has_$name$()) {\n");
- } else if (field->cpp_type() == FieldDescriptor::CPPTYPE_DOUBLE
- || field->cpp_type() == FieldDescriptor::CPPTYPE_FLOAT) {
+ } else if (field->cpp_type() == FieldDescriptor::CPPTYPE_DOUBLE ||
+ field->cpp_type() == FieldDescriptor::CPPTYPE_FLOAT) {
// Handle float comparison to prevent -Wfloat-equal warnings
format("if (!($prefix$$name$() <= 0 && $prefix$$name$() >= 0)) {\n");
} else {
@@ -766,7 +766,8 @@
format.Set("camel_oneof_name", UnderscoresToCamelCase(oneof->name(), true));
format(
"void ${1$clear_$oneof_name$$}$();\n"
- "$camel_oneof_name$Case $oneof_name$_case() const;\n", oneof);
+ "$camel_oneof_name$Case $oneof_name$_case() const;\n",
+ oneof);
}
}
@@ -1551,7 +1552,8 @@
"${1$$oneof_name$_case$}$() const {\n"
" return $classname$::$camel_oneof_name$Case("
"_oneof_case_[$oneof_index$]);\n"
- "}\n", oneof);
+ "}\n",
+ oneof);
}
}
@@ -2745,21 +2747,6 @@
MessageCreateFunction(descriptor_));
}
-bool MessageGenerator::MaybeGenerateOptionalFieldCondition(
- io::Printer* printer, const FieldDescriptor* field,
- int expected_has_bits_index) {
- Formatter format(printer, variables_);
- int has_bit_index = has_bit_indices_[field->index()];
- if (!field->options().weak() &&
- expected_has_bits_index == has_bit_index / 32) {
- const std::string mask =
- StrCat(strings::Hex(1u << (has_bit_index % 32), strings::ZERO_PAD_8));
- format("if (cached_has_bits & 0x$1$u) {\n", mask);
- return true;
- }
- return false;
-}
-
void MessageGenerator::GenerateClear(io::Printer* printer) {
Formatter format(printer, variables_);
// Performance tuning parameters
diff --git a/src/google/protobuf/compiler/cpp/cpp_message.h b/src/google/protobuf/compiler/cpp/cpp_message.h
index 6bef8d5..f7206b9 100644
--- a/src/google/protobuf/compiler/cpp/cpp_message.h
+++ b/src/google/protobuf/compiler/cpp/cpp_message.h
@@ -135,13 +135,6 @@
// Generate the arena-specific destructor code.
void GenerateArenaDestructorCode(io::Printer* printer);
- // Helper for GenerateClear and others. Optionally emits a condition that
- // assumes the existence of the cached_has_bits variable, and returns true
- // if the condition was printed.
- bool MaybeGenerateOptionalFieldCondition(io::Printer* printer,
- const FieldDescriptor* field,
- int expected_has_bits_index);
-
// Generate standard Message methods.
void GenerateClear(io::Printer* printer);
void GenerateOneofClear(io::Printer* printer);
diff --git a/src/google/protobuf/compiler/cpp/cpp_message_field.cc b/src/google/protobuf/compiler/cpp/cpp_message_field.cc
index 8ba8c56..659e3fa 100644
--- a/src/google/protobuf/compiler/cpp/cpp_message_field.cc
+++ b/src/google/protobuf/compiler/cpp/cpp_message_field.cc
@@ -44,7 +44,6 @@
namespace cpp {
namespace {
-
string ReinterpretCast(const string& type, const string& expression,
bool implicit_weak_field) {
if (implicit_weak_field) {
diff --git a/src/google/protobuf/compiler/cpp/cpp_service.cc b/src/google/protobuf/compiler/cpp/cpp_service.cc
index ec5e32a..994e653 100644
--- a/src/google/protobuf/compiler/cpp/cpp_service.cc
+++ b/src/google/protobuf/compiler/cpp/cpp_service.cc
@@ -167,14 +167,6 @@
// ===================================================================
-void ServiceGenerator::GenerateDescriptorInitializer(io::Printer* printer,
- int index) {
- Formatter format(printer, vars_);
- format("$classname$_descriptor_ = file->service($1$);\n", index);
-}
-
-// ===================================================================
-
void ServiceGenerator::GenerateImplementation(io::Printer* printer) {
Formatter format(printer, vars_);
format(
diff --git a/src/google/protobuf/compiler/cpp/cpp_service.h b/src/google/protobuf/compiler/cpp/cpp_service.h
index f441b3b..63c7ca4 100644
--- a/src/google/protobuf/compiler/cpp/cpp_service.h
+++ b/src/google/protobuf/compiler/cpp/cpp_service.h
@@ -69,10 +69,6 @@
// Source file stuff.
- // Generate code that initializes the global variable storing the service's
- // descriptor.
- void GenerateDescriptorInitializer(io::Printer* printer, int index);
-
// Generate implementations of everything declared by
// GenerateDeclarations().
void GenerateImplementation(io::Printer* printer);
diff --git a/src/google/protobuf/compiler/java/java_enum_field.cc b/src/google/protobuf/compiler/java/java_enum_field.cc
index b602bba..280efaf 100644
--- a/src/google/protobuf/compiler/java/java_enum_field.cc
+++ b/src/google/protobuf/compiler/java/java_enum_field.cc
@@ -137,10 +137,7 @@
ImmutableEnumFieldGenerator::ImmutableEnumFieldGenerator(
const FieldDescriptor* descriptor, int messageBitIndex, int builderBitIndex,
Context* context)
- : descriptor_(descriptor),
- messageBitIndex_(messageBitIndex),
- builderBitIndex_(builderBitIndex),
- name_resolver_(context->GetNameResolver()) {
+ : descriptor_(descriptor), name_resolver_(context->GetNameResolver()) {
SetEnumVariables(descriptor, messageBitIndex, builderBitIndex,
context->GetFieldGeneratorInfo(descriptor), name_resolver_,
&variables_);
@@ -588,11 +585,7 @@
RepeatedImmutableEnumFieldGenerator::RepeatedImmutableEnumFieldGenerator(
const FieldDescriptor* descriptor, int messageBitIndex, int builderBitIndex,
Context* context)
- : descriptor_(descriptor),
- messageBitIndex_(messageBitIndex),
- builderBitIndex_(builderBitIndex),
- context_(context),
- name_resolver_(context->GetNameResolver()) {
+ : descriptor_(descriptor), name_resolver_(context->GetNameResolver()) {
SetEnumVariables(descriptor, messageBitIndex, builderBitIndex,
context->GetFieldGeneratorInfo(descriptor), name_resolver_,
&variables_);
diff --git a/src/google/protobuf/compiler/java/java_enum_field.h b/src/google/protobuf/compiler/java/java_enum_field.h
index 723102d..95c7db5 100644
--- a/src/google/protobuf/compiler/java/java_enum_field.h
+++ b/src/google/protobuf/compiler/java/java_enum_field.h
@@ -86,9 +86,6 @@
protected:
const FieldDescriptor* descriptor_;
std::map<std::string, std::string> variables_;
- const int messageBitIndex_;
- const int builderBitIndex_;
- Context* context_;
ClassNameResolver* name_resolver_;
private:
@@ -147,9 +144,6 @@
private:
const FieldDescriptor* descriptor_;
std::map<std::string, std::string> variables_;
- const int messageBitIndex_;
- const int builderBitIndex_;
- Context* context_;
ClassNameResolver* name_resolver_;
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(RepeatedImmutableEnumFieldGenerator);
diff --git a/src/google/protobuf/compiler/java/java_enum_field_lite.cc b/src/google/protobuf/compiler/java/java_enum_field_lite.cc
index e0171ab..376aa86 100644
--- a/src/google/protobuf/compiler/java/java_enum_field_lite.cc
+++ b/src/google/protobuf/compiler/java/java_enum_field_lite.cc
@@ -281,42 +281,6 @@
}
void ImmutableEnumFieldLiteGenerator::GenerateFieldInfo(
- io::Printer* printer) const {
- if (SupportFieldPresence(descriptor_->file())) {
- if (descriptor_->is_required()) {
- printer->Print(
- variables_,
- "fieldInfoForProto2Required(\n"
- " reflectField($classname$.class, \"$name$_\"),\n"
- " $number$,\n"
- " com.google.protobuf.FieldType.$annotation_field_type$,\n"
- " $bit_field_name$,\n"
- " $bit_field_mask$,\n"
- " false,\n"
- " $type$.internalGetValueMap())");
- } else {
- printer->Print(
- variables_,
- "fieldInfoForProto2Optional(\n"
- " reflectField($classname$.class, \"$name$_\"),\n"
- " $number$,\n"
- " com.google.protobuf.FieldType.$annotation_field_type$,\n"
- " $bit_field_name$,\n"
- " $bit_field_mask$,\n"
- " false,\n"
- " $type$.internalGetValueMap())");
- }
- } else {
- printer->Print(
- variables_,
- "fieldInfoWithEnumMap(\n"
- " reflectField($classname$.class, \"$name$_\"),\n"
- " $number$,\n"
- " com.google.protobuf.FieldType.$annotation_field_type$,\n"
- " $type$.internalGetValueMap())");
- }
-}
-void ImmutableEnumFieldLiteGenerator::GenerateFieldInfo(
io::Printer* printer, std::vector<uint16>* output) const {
WriteIntToUtf16CharSequence(descriptor_->number(), output);
WriteIntToUtf16CharSequence(GetExperimentalJavaFieldType(descriptor_),
@@ -417,15 +381,6 @@
}
void ImmutableEnumOneofFieldLiteGenerator::GenerateFieldInfo(
- io::Printer* printer) const {
- printer->Print(variables_,
- "fieldInfoForOneofEnum(\n"
- " $number$,\n"
- " $oneof_name$_,\n"
- " $oneof_stored_type$.class,\n"
- " $type$.internalGetValueMap())");
-}
-void ImmutableEnumOneofFieldLiteGenerator::GenerateFieldInfo(
io::Printer* printer, std::vector<uint16>* output) const {
WriteIntToUtf16CharSequence(descriptor_->number(), output);
WriteIntToUtf16CharSequence(GetExperimentalJavaFieldType(descriptor_),
@@ -504,7 +459,6 @@
int messageBitIndex,
Context* context)
: descriptor_(descriptor),
- messageBitIndex_(messageBitIndex),
context_(context),
name_resolver_(context->GetNameResolver()) {
SetEnumVariables(descriptor, messageBitIndex, 0,
@@ -679,15 +633,6 @@
}
void RepeatedImmutableEnumFieldLiteGenerator::GenerateFieldInfo(
- io::Printer* printer) const {
- printer->Print(variables_,
- "fieldInfoWithEnumMap(\n"
- " reflectField($classname$.class, \"$name$_\"),\n"
- " $number$,\n"
- " com.google.protobuf.FieldType.$annotation_field_type$,\n"
- " $type$.internalGetValueMap())");
-}
-void RepeatedImmutableEnumFieldLiteGenerator::GenerateFieldInfo(
io::Printer* printer, std::vector<uint16>* output) const {
WriteIntToUtf16CharSequence(descriptor_->number(), output);
WriteIntToUtf16CharSequence(GetExperimentalJavaFieldType(descriptor_),
diff --git a/src/google/protobuf/compiler/java/java_enum_field_lite.h b/src/google/protobuf/compiler/java/java_enum_field_lite.h
index a895587..b5e9807 100644
--- a/src/google/protobuf/compiler/java/java_enum_field_lite.h
+++ b/src/google/protobuf/compiler/java/java_enum_field_lite.h
@@ -69,7 +69,6 @@
void GenerateMembers(io::Printer* printer) const;
void GenerateBuilderMembers(io::Printer* printer) const;
void GenerateInitializationCode(io::Printer* printer) const;
- void GenerateFieldInfo(io::Printer* printer) const;
void GenerateFieldInfo(io::Printer* printer,
std::vector<uint16>* output) const;
@@ -95,7 +94,6 @@
void GenerateMembers(io::Printer* printer) const;
void GenerateBuilderMembers(io::Printer* printer) const;
- void GenerateFieldInfo(io::Printer* printer) const;
void GenerateFieldInfo(io::Printer* printer,
std::vector<uint16>* output) const;
@@ -116,7 +114,6 @@
void GenerateMembers(io::Printer* printer) const;
void GenerateBuilderMembers(io::Printer* printer) const;
void GenerateInitializationCode(io::Printer* printer) const;
- void GenerateFieldInfo(io::Printer* printer) const;
void GenerateFieldInfo(io::Printer* printer,
std::vector<uint16>* output) const;
@@ -125,7 +122,6 @@
private:
const FieldDescriptor* descriptor_;
std::map<std::string, std::string> variables_;
- const int messageBitIndex_;
Context* context_;
ClassNameResolver* name_resolver_;
diff --git a/src/google/protobuf/compiler/java/java_enum_lite.cc b/src/google/protobuf/compiler/java/java_enum_lite.cc
index c4d6f8a..a00624b 100644
--- a/src/google/protobuf/compiler/java/java_enum_lite.cc
+++ b/src/google/protobuf/compiler/java/java_enum_lite.cc
@@ -223,18 +223,6 @@
printer->Print("}\n\n");
}
-bool EnumLiteGenerator::CanUseEnumValues() {
- if (canonical_values_.size() != descriptor_->value_count()) {
- return false;
- }
- for (int i = 0; i < descriptor_->value_count(); i++) {
- if (descriptor_->value(i)->name() != canonical_values_[i]->name()) {
- return false;
- }
- }
- return true;
-}
-
} // namespace java
} // namespace compiler
} // namespace protobuf
diff --git a/src/google/protobuf/compiler/java/java_enum_lite.h b/src/google/protobuf/compiler/java/java_enum_lite.h
index 996d44e..50f3fe7 100644
--- a/src/google/protobuf/compiler/java/java_enum_lite.h
+++ b/src/google/protobuf/compiler/java/java_enum_lite.h
@@ -87,8 +87,6 @@
Context* context_;
ClassNameResolver* name_resolver_;
- bool CanUseEnumValues();
-
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(EnumLiteGenerator);
};
diff --git a/src/google/protobuf/compiler/java/java_extension.cc b/src/google/protobuf/compiler/java/java_extension.cc
index f197d41..3ad64e0 100644
--- a/src/google/protobuf/compiler/java/java_extension.cc
+++ b/src/google/protobuf/compiler/java/java_extension.cc
@@ -49,9 +49,7 @@
ImmutableExtensionGenerator::ImmutableExtensionGenerator(
const FieldDescriptor* descriptor, Context* context)
- : descriptor_(descriptor),
- context_(context),
- name_resolver_(context->GetNameResolver()) {
+ : descriptor_(descriptor), name_resolver_(context->GetNameResolver()) {
if (descriptor_->extension_scope() != NULL) {
scope_ =
name_resolver_->GetImmutableClassName(descriptor_->extension_scope());
diff --git a/src/google/protobuf/compiler/java/java_extension.h b/src/google/protobuf/compiler/java/java_extension.h
index a8eb1ae..ab87890 100644
--- a/src/google/protobuf/compiler/java/java_extension.h
+++ b/src/google/protobuf/compiler/java/java_extension.h
@@ -100,7 +100,6 @@
protected:
const FieldDescriptor* descriptor_;
- Context* context_;
ClassNameResolver* name_resolver_;
std::string scope_;
diff --git a/src/google/protobuf/compiler/java/java_extension_lite.cc b/src/google/protobuf/compiler/java/java_extension_lite.cc
index 27225ac..71bf4e2 100644
--- a/src/google/protobuf/compiler/java/java_extension_lite.cc
+++ b/src/google/protobuf/compiler/java/java_extension_lite.cc
@@ -44,9 +44,7 @@
ImmutableExtensionLiteGenerator::ImmutableExtensionLiteGenerator(
const FieldDescriptor* descriptor, Context* context)
- : descriptor_(descriptor),
- context_(context),
- name_resolver_(context->GetNameResolver()) {
+ : descriptor_(descriptor), name_resolver_(context->GetNameResolver()) {
if (descriptor_->extension_scope() != NULL) {
scope_ =
name_resolver_->GetImmutableClassName(descriptor_->extension_scope());
diff --git a/src/google/protobuf/compiler/java/java_extension_lite.h b/src/google/protobuf/compiler/java/java_extension_lite.h
index eaa90a4..410781d 100644
--- a/src/google/protobuf/compiler/java/java_extension_lite.h
+++ b/src/google/protobuf/compiler/java/java_extension_lite.h
@@ -61,7 +61,6 @@
private:
const FieldDescriptor* descriptor_;
- Context* context_;
ClassNameResolver* name_resolver_;
std::string scope_;
diff --git a/src/google/protobuf/compiler/java/java_field.h b/src/google/protobuf/compiler/java/java_field.h
index 8a88d69..9d04dc8 100644
--- a/src/google/protobuf/compiler/java/java_field.h
+++ b/src/google/protobuf/compiler/java/java_field.h
@@ -124,8 +124,6 @@
private:
const Descriptor* descriptor_;
- Context* context_;
- ClassNameResolver* name_resolver_;
std::vector<std::unique_ptr<FieldGeneratorType>> field_generators_;
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FieldGeneratorMap);
diff --git a/src/google/protobuf/compiler/java/java_helpers.cc b/src/google/protobuf/compiler/java/java_helpers.cc
index 4ff2880..97934ac 100644
--- a/src/google/protobuf/compiler/java/java_helpers.cc
+++ b/src/google/protobuf/compiler/java/java_helpers.cc
@@ -267,29 +267,6 @@
return package_dir;
}
-// TODO(xiaofeng): This function is only kept for it's publicly referenced.
-// It should be removed after mutable API up-integration.
-std::string ToJavaName(const std::string& full_name,
- const FileDescriptor* file) {
- std::string result;
- if (file->options().java_multiple_files()) {
- result = FileJavaPackage(file);
- } else {
- result = ClassName(file);
- }
- if (!result.empty()) {
- result += '.';
- }
- if (file->package().empty()) {
- result += full_name;
- } else {
- // Strip the proto package from full_name since we've replaced it with
- // the Java package.
- result += full_name.substr(file->package().size() + 1);
- }
- return result;
-}
-
std::string ClassName(const Descriptor* descriptor) {
ClassNameResolver name_resolver;
return name_resolver.GetClassName(descriptor, true);
diff --git a/src/google/protobuf/compiler/java/java_helpers.h b/src/google/protobuf/compiler/java/java_helpers.h
index 3d36ec4..b06ab20 100644
--- a/src/google/protobuf/compiler/java/java_helpers.h
+++ b/src/google/protobuf/compiler/java/java_helpers.h
@@ -111,14 +111,6 @@
// Returns output directory for the given package name.
std::string JavaPackageToDir(std::string package_name);
-// Converts the given fully-qualified name in the proto namespace to its
-// fully-qualified name in the Java namespace, given that it is in the given
-// file.
-// TODO(xiaofeng): this method is deprecated and should be removed in the
-// future.
-std::string ToJavaName(const std::string& full_name,
- const FileDescriptor* file);
-
// TODO(xiaofeng): the following methods are kept for they are exposed
// publicly in //net/proto2/compiler/java/public/names.h. They return
// immutable names only and should be removed after mutable API is
diff --git a/src/google/protobuf/compiler/java/java_message_field.cc b/src/google/protobuf/compiler/java/java_message_field.cc
index 8c57675..eb3ed51 100644
--- a/src/google/protobuf/compiler/java/java_message_field.cc
+++ b/src/google/protobuf/compiler/java/java_message_field.cc
@@ -122,11 +122,7 @@
ImmutableMessageFieldGenerator::ImmutableMessageFieldGenerator(
const FieldDescriptor* descriptor, int messageBitIndex, int builderBitIndex,
Context* context)
- : descriptor_(descriptor),
- messageBitIndex_(messageBitIndex),
- builderBitIndex_(builderBitIndex),
- context_(context),
- name_resolver_(context->GetNameResolver()) {
+ : descriptor_(descriptor), name_resolver_(context->GetNameResolver()) {
SetMessageVariables(descriptor, messageBitIndex, builderBitIndex,
context->GetFieldGeneratorInfo(descriptor),
name_resolver_, &variables_);
@@ -799,11 +795,7 @@
RepeatedImmutableMessageFieldGenerator::RepeatedImmutableMessageFieldGenerator(
const FieldDescriptor* descriptor, int messageBitIndex, int builderBitIndex,
Context* context)
- : descriptor_(descriptor),
- messageBitIndex_(messageBitIndex),
- builderBitIndex_(builderBitIndex),
- context_(context),
- name_resolver_(context->GetNameResolver()) {
+ : descriptor_(descriptor), name_resolver_(context->GetNameResolver()) {
SetMessageVariables(descriptor, messageBitIndex, builderBitIndex,
context->GetFieldGeneratorInfo(descriptor),
name_resolver_, &variables_);
diff --git a/src/google/protobuf/compiler/java/java_message_field.h b/src/google/protobuf/compiler/java/java_message_field.h
index 58344e5..36fa492 100644
--- a/src/google/protobuf/compiler/java/java_message_field.h
+++ b/src/google/protobuf/compiler/java/java_message_field.h
@@ -87,9 +87,6 @@
protected:
const FieldDescriptor* descriptor_;
std::map<std::string, std::string> variables_;
- const int messageBitIndex_;
- const int builderBitIndex_;
- Context* context_;
ClassNameResolver* name_resolver_;
void PrintNestedBuilderCondition(io::Printer* printer,
@@ -155,9 +152,6 @@
protected:
const FieldDescriptor* descriptor_;
std::map<std::string, std::string> variables_;
- const int messageBitIndex_;
- const int builderBitIndex_;
- Context* context_;
ClassNameResolver* name_resolver_;
void PrintNestedBuilderCondition(io::Printer* printer,
diff --git a/src/google/protobuf/compiler/java/java_message_field_lite.cc b/src/google/protobuf/compiler/java/java_message_field_lite.cc
index c405981..3a6909f 100644
--- a/src/google/protobuf/compiler/java/java_message_field_lite.cc
+++ b/src/google/protobuf/compiler/java/java_message_field_lite.cc
@@ -107,7 +107,6 @@
const FieldDescriptor* descriptor, int messageBitIndex, Context* context)
: descriptor_(descriptor),
messageBitIndex_(messageBitIndex),
- context_(context),
name_resolver_(context->GetNameResolver()) {
SetMessageVariables(descriptor, messageBitIndex, 0,
context->GetFieldGeneratorInfo(descriptor),
@@ -472,10 +471,7 @@
RepeatedImmutableMessageFieldLiteGenerator(
const FieldDescriptor* descriptor, int messageBitIndex,
Context* context)
- : descriptor_(descriptor),
- messageBitIndex_(messageBitIndex),
- context_(context),
- name_resolver_(context->GetNameResolver()) {
+ : descriptor_(descriptor), name_resolver_(context->GetNameResolver()) {
SetMessageVariables(descriptor, messageBitIndex, 0,
context->GetFieldGeneratorInfo(descriptor),
name_resolver_, &variables_);
diff --git a/src/google/protobuf/compiler/java/java_message_field_lite.h b/src/google/protobuf/compiler/java/java_message_field_lite.h
index c409728..c0a9b37 100644
--- a/src/google/protobuf/compiler/java/java_message_field_lite.h
+++ b/src/google/protobuf/compiler/java/java_message_field_lite.h
@@ -78,7 +78,6 @@
const FieldDescriptor* descriptor_;
std::map<std::string, std::string> variables_;
const int messageBitIndex_;
- Context* context_;
ClassNameResolver* name_resolver_;
private:
@@ -123,8 +122,6 @@
protected:
const FieldDescriptor* descriptor_;
std::map<std::string, std::string> variables_;
- const int messageBitIndex_;
- Context* context_;
ClassNameResolver* name_resolver_;
private:
diff --git a/src/google/protobuf/compiler/java/java_message_lite.cc b/src/google/protobuf/compiler/java/java_message_lite.cc
index c798feb..73e0b9d 100644
--- a/src/google/protobuf/compiler/java/java_message_lite.cc
+++ b/src/google/protobuf/compiler/java/java_message_lite.cc
@@ -65,15 +65,6 @@
using internal::WireFormat;
using internal::WireFormatLite;
-namespace {
-std::string MapValueImmutableClassdName(const Descriptor* descriptor,
- ClassNameResolver* name_resolver) {
- const FieldDescriptor* value_field = descriptor->FindFieldByName("value");
- GOOGLE_CHECK_EQ(FieldDescriptor::TYPE_MESSAGE, value_field->type());
- return name_resolver->GetImmutableClassName(value_field->message_type());
-}
-} // namespace
-
// ===================================================================
ImmutableMessageLiteGenerator::ImmutableMessageLiteGenerator(
const Descriptor* descriptor, Context* context)
diff --git a/src/google/protobuf/compiler/java/java_message_lite.h b/src/google/protobuf/compiler/java/java_message_lite.h
index 61e81df..5290b1e 100644
--- a/src/google/protobuf/compiler/java/java_message_lite.h
+++ b/src/google/protobuf/compiler/java/java_message_lite.h
@@ -63,7 +63,6 @@
void GenerateBuilder(io::Printer* printer);
void GenerateDynamicMethodNewBuilder(io::Printer* printer);
void GenerateInitializers(io::Printer* printer);
- void GenerateEqualsAndHashCode(io::Printer* printer);
void GenerateParser(io::Printer* printer);
void GenerateConstructor(io::Printer* printer);
void GenerateDynamicMethodNewBuildMessageInfo(io::Printer* printer);
diff --git a/src/google/protobuf/compiler/java/java_primitive_field.cc b/src/google/protobuf/compiler/java/java_primitive_field.cc
index 43c7f8f..9aef29b 100644
--- a/src/google/protobuf/compiler/java/java_primitive_field.cc
+++ b/src/google/protobuf/compiler/java/java_primitive_field.cc
@@ -187,11 +187,7 @@
ImmutablePrimitiveFieldGenerator::ImmutablePrimitiveFieldGenerator(
const FieldDescriptor* descriptor, int messageBitIndex, int builderBitIndex,
Context* context)
- : descriptor_(descriptor),
- messageBitIndex_(messageBitIndex),
- builderBitIndex_(builderBitIndex),
- context_(context),
- name_resolver_(context->GetNameResolver()) {
+ : descriptor_(descriptor), name_resolver_(context->GetNameResolver()) {
SetPrimitiveVariables(descriptor, messageBitIndex, builderBitIndex,
context->GetFieldGeneratorInfo(descriptor),
name_resolver_, &variables_);
@@ -627,11 +623,7 @@
int messageBitIndex,
int builderBitIndex,
Context* context)
- : descriptor_(descriptor),
- messageBitIndex_(messageBitIndex),
- builderBitIndex_(builderBitIndex),
- context_(context),
- name_resolver_(context->GetNameResolver()) {
+ : descriptor_(descriptor), name_resolver_(context->GetNameResolver()) {
SetPrimitiveVariables(descriptor, messageBitIndex, builderBitIndex,
context->GetFieldGeneratorInfo(descriptor),
name_resolver_, &variables_);
diff --git a/src/google/protobuf/compiler/java/java_primitive_field.h b/src/google/protobuf/compiler/java/java_primitive_field.h
index 185a268..db20750 100644
--- a/src/google/protobuf/compiler/java/java_primitive_field.h
+++ b/src/google/protobuf/compiler/java/java_primitive_field.h
@@ -87,9 +87,6 @@
protected:
const FieldDescriptor* descriptor_;
std::map<std::string, std::string> variables_;
- const int messageBitIndex_;
- const int builderBitIndex_;
- Context* context_;
ClassNameResolver* name_resolver_;
private:
@@ -148,9 +145,6 @@
private:
const FieldDescriptor* descriptor_;
std::map<std::string, std::string> variables_;
- const int messageBitIndex_;
- const int builderBitIndex_;
- Context* context_;
ClassNameResolver* name_resolver_;
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(RepeatedImmutablePrimitiveFieldGenerator);
diff --git a/src/google/protobuf/compiler/java/java_primitive_field_lite.cc b/src/google/protobuf/compiler/java/java_primitive_field_lite.cc
index 7ca3073..880bd92 100644
--- a/src/google/protobuf/compiler/java/java_primitive_field_lite.cc
+++ b/src/google/protobuf/compiler/java/java_primitive_field_lite.cc
@@ -183,7 +183,6 @@
const FieldDescriptor* descriptor, int messageBitIndex, Context* context)
: descriptor_(descriptor),
messageBitIndex_(messageBitIndex),
- context_(context),
name_resolver_(context->GetNameResolver()) {
SetPrimitiveVariables(descriptor, messageBitIndex, 0,
context->GetFieldGeneratorInfo(descriptor),
@@ -444,7 +443,6 @@
const FieldDescriptor* descriptor, int messageBitIndex,
Context* context)
: descriptor_(descriptor),
- messageBitIndex_(messageBitIndex),
context_(context),
name_resolver_(context->GetNameResolver()) {
SetPrimitiveVariables(descriptor, messageBitIndex, 0,
diff --git a/src/google/protobuf/compiler/java/java_primitive_field_lite.h b/src/google/protobuf/compiler/java/java_primitive_field_lite.h
index 61d1e4c..5867cee 100644
--- a/src/google/protobuf/compiler/java/java_primitive_field_lite.h
+++ b/src/google/protobuf/compiler/java/java_primitive_field_lite.h
@@ -78,7 +78,6 @@
const FieldDescriptor* descriptor_;
std::map<std::string, std::string> variables_;
const int messageBitIndex_;
- Context* context_;
ClassNameResolver* name_resolver_;
private:
@@ -124,7 +123,6 @@
private:
const FieldDescriptor* descriptor_;
std::map<std::string, std::string> variables_;
- const int messageBitIndex_;
Context* context_;
ClassNameResolver* name_resolver_;
diff --git a/src/google/protobuf/compiler/java/java_string_field.cc b/src/google/protobuf/compiler/java/java_string_field.cc
index d68f178..6ebc3e2 100644
--- a/src/google/protobuf/compiler/java/java_string_field.cc
+++ b/src/google/protobuf/compiler/java/java_string_field.cc
@@ -139,11 +139,7 @@
ImmutableStringFieldGenerator::ImmutableStringFieldGenerator(
const FieldDescriptor* descriptor, int messageBitIndex, int builderBitIndex,
Context* context)
- : descriptor_(descriptor),
- messageBitIndex_(messageBitIndex),
- builderBitIndex_(builderBitIndex),
- context_(context),
- name_resolver_(context->GetNameResolver()) {
+ : descriptor_(descriptor), name_resolver_(context->GetNameResolver()) {
SetPrimitiveVariables(descriptor, messageBitIndex, builderBitIndex,
context->GetFieldGeneratorInfo(descriptor),
name_resolver_, &variables_);
@@ -708,11 +704,7 @@
RepeatedImmutableStringFieldGenerator::RepeatedImmutableStringFieldGenerator(
const FieldDescriptor* descriptor, int messageBitIndex, int builderBitIndex,
Context* context)
- : descriptor_(descriptor),
- messageBitIndex_(messageBitIndex),
- builderBitIndex_(builderBitIndex),
- context_(context),
- name_resolver_(context->GetNameResolver()) {
+ : descriptor_(descriptor), name_resolver_(context->GetNameResolver()) {
SetPrimitiveVariables(descriptor, messageBitIndex, builderBitIndex,
context->GetFieldGeneratorInfo(descriptor),
name_resolver_, &variables_);
diff --git a/src/google/protobuf/compiler/java/java_string_field.h b/src/google/protobuf/compiler/java/java_string_field.h
index 38fb836..1c00ae8 100644
--- a/src/google/protobuf/compiler/java/java_string_field.h
+++ b/src/google/protobuf/compiler/java/java_string_field.h
@@ -87,9 +87,6 @@
protected:
const FieldDescriptor* descriptor_;
std::map<std::string, std::string> variables_;
- const int messageBitIndex_;
- const int builderBitIndex_;
- Context* context_;
ClassNameResolver* name_resolver_;
private:
@@ -146,9 +143,6 @@
private:
const FieldDescriptor* descriptor_;
std::map<std::string, std::string> variables_;
- const int messageBitIndex_;
- const int builderBitIndex_;
- Context* context_;
ClassNameResolver* name_resolver_;
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(RepeatedImmutableStringFieldGenerator);
diff --git a/src/google/protobuf/compiler/java/java_string_field_lite.cc b/src/google/protobuf/compiler/java/java_string_field_lite.cc
index 5c94cb3..40868fa 100644
--- a/src/google/protobuf/compiler/java/java_string_field_lite.cc
+++ b/src/google/protobuf/compiler/java/java_string_field_lite.cc
@@ -123,7 +123,6 @@
const FieldDescriptor* descriptor, int messageBitIndex, Context* context)
: descriptor_(descriptor),
messageBitIndex_(messageBitIndex),
- context_(context),
name_resolver_(context->GetNameResolver()) {
SetPrimitiveVariables(descriptor, messageBitIndex, 0,
context->GetFieldGeneratorInfo(descriptor),
@@ -489,10 +488,7 @@
RepeatedImmutableStringFieldLiteGenerator(const FieldDescriptor* descriptor,
int messageBitIndex,
Context* context)
- : descriptor_(descriptor),
- messageBitIndex_(messageBitIndex),
- context_(context),
- name_resolver_(context->GetNameResolver()) {
+ : descriptor_(descriptor), name_resolver_(context->GetNameResolver()) {
SetPrimitiveVariables(descriptor, messageBitIndex, 0,
context->GetFieldGeneratorInfo(descriptor),
name_resolver_, &variables_);
@@ -702,11 +698,6 @@
printer->Annotate("{", "}", descriptor_);
}
-void RepeatedImmutableStringFieldLiteGenerator::
- GenerateFieldBuilderInitializationCode(io::Printer* printer) const {
- // noop for strings
-}
-
void RepeatedImmutableStringFieldLiteGenerator::GenerateFieldInfo(
io::Printer* printer, std::vector<uint16>* output) const {
WriteIntToUtf16CharSequence(descriptor_->number(), output);
diff --git a/src/google/protobuf/compiler/java/java_string_field_lite.h b/src/google/protobuf/compiler/java/java_string_field_lite.h
index 960f468..b67135c 100644
--- a/src/google/protobuf/compiler/java/java_string_field_lite.h
+++ b/src/google/protobuf/compiler/java/java_string_field_lite.h
@@ -79,7 +79,6 @@
const FieldDescriptor* descriptor_;
std::map<std::string, std::string> variables_;
const int messageBitIndex_;
- Context* context_;
ClassNameResolver* name_resolver_;
private:
@@ -115,15 +114,6 @@
void GenerateMembers(io::Printer* printer) const;
void GenerateBuilderMembers(io::Printer* printer) const;
void GenerateInitializationCode(io::Printer* printer) const;
- void GenerateVisitCode(io::Printer* printer) const;
- void GenerateDynamicMethodMakeImmutableCode(io::Printer* printer) const;
- void GenerateParsingCode(io::Printer* printer) const;
- void GenerateParsingDoneCode(io::Printer* printer) const;
- void GenerateSerializationCode(io::Printer* printer) const;
- void GenerateSerializedSizeCode(io::Printer* printer) const;
- void GenerateFieldBuilderInitializationCode(io::Printer* printer) const;
- void GenerateEqualsCode(io::Printer* printer) const;
- void GenerateHashCode(io::Printer* printer) const;
void GenerateFieldInfo(io::Printer* printer,
std::vector<uint16>* output) const;
@@ -132,8 +122,6 @@
private:
const FieldDescriptor* descriptor_;
std::map<std::string, std::string> variables_;
- const int messageBitIndex_;
- Context* context_;
ClassNameResolver* name_resolver_;
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(RepeatedImmutableStringFieldLiteGenerator);
diff --git a/src/google/protobuf/compiler/js/js_generator.h b/src/google/protobuf/compiler/js/js_generator.h
index b1c1878..7895b0b 100644
--- a/src/google/protobuf/compiler/js/js_generator.h
+++ b/src/google/protobuf/compiler/js/js_generator.h
@@ -278,8 +278,6 @@
void GenerateClassFieldFromObject(const GeneratorOptions& options,
io::Printer* printer,
const FieldDescriptor* field) const;
- void GenerateClassClone(const GeneratorOptions& options, io::Printer* printer,
- const Descriptor* desc) const;
void GenerateClassRegistration(const GeneratorOptions& options,
io::Printer* printer,
const Descriptor* desc) const;
diff --git a/src/google/protobuf/descriptor.cc b/src/google/protobuf/descriptor.cc
index 9411ec6..735c519 100644
--- a/src/google/protobuf/descriptor.cc
+++ b/src/google/protobuf/descriptor.cc
@@ -3874,7 +3874,8 @@
placeholder_enum->values_ = tables_->AllocateArray<EnumValueDescriptor>(1);
EnumValueDescriptor* placeholder_value = &placeholder_enum->values_[0];
- memset(static_cast<void*>(placeholder_value), 0, sizeof(*placeholder_value));
+ memset(static_cast<void*>(placeholder_value), 0,
+ sizeof(*placeholder_value));
placeholder_value->name_ = tables_->AllocateString("PLACEHOLDER_VALUE");
// Note that enum value names are siblings of their type, not children.
@@ -3894,7 +3895,8 @@
placeholder_file->message_types_ = tables_->AllocateArray<Descriptor>(1);
Descriptor* placeholder_message = &placeholder_file->message_types_[0];
- memset(static_cast<void*>(placeholder_message), 0, sizeof(*placeholder_message));
+ memset(static_cast<void*>(placeholder_message), 0,
+ sizeof(*placeholder_message));
placeholder_message->full_name_ = placeholder_full_name;
placeholder_message->name_ = placeholder_name;
diff --git a/src/google/protobuf/descriptor.h b/src/google/protobuf/descriptor.h
index 424bd84..7a873f0 100644
--- a/src/google/protobuf/descriptor.h
+++ b/src/google/protobuf/descriptor.h
@@ -887,7 +887,6 @@
const std::string* name_;
const std::string* full_name_;
const Descriptor* containing_type_;
- bool is_extendable_;
int field_count_;
const FieldDescriptor** fields_;
const OneofOptions* options_;
diff --git a/src/google/protobuf/io/coded_stream_unittest.cc b/src/google/protobuf/io/coded_stream_unittest.cc
index 6e3c4c4..26e6a7c 100644
--- a/src/google/protobuf/io/coded_stream_unittest.cc
+++ b/src/google/protobuf/io/coded_stream_unittest.cc
@@ -131,13 +131,6 @@
class CodedStreamTest : public testing::Test {
protected:
- // Helper method used by tests for bytes warning. See implementation comment
- // for further information.
- static void SetupTotalBytesLimitWarningTest(
- int total_bytes_limit, int warning_threshold,
- std::vector<std::string>* out_errors,
- std::vector<std::string>* out_warnings);
-
// Buffer used during most of the tests. This assumes tests run sequentially.
static const int kBufferSize = 1024 * 64;
static uint8 buffer_[kBufferSize];
@@ -1278,28 +1271,6 @@
EXPECT_FALSE(coded_input.ConsumedEntireMessage());
}
-// This method is used by the tests below.
-// It constructs a CodedInputStream with the given limits and tries to read 2KiB
-// of data from it. Then it returns the logged errors and warnings in the given
-// vectors.
-void CodedStreamTest::SetupTotalBytesLimitWarningTest(
- int total_bytes_limit, int warning_threshold,
- std::vector<std::string>* out_errors,
- std::vector<std::string>* out_warnings) {
- ArrayInputStream raw_input(buffer_, sizeof(buffer_), 128);
-
- ScopedMemoryLog scoped_log;
- {
- CodedInputStream input(&raw_input);
- input.SetTotalBytesLimit(total_bytes_limit, warning_threshold);
- std::string str;
- EXPECT_TRUE(input.ReadString(&str, 2048));
- }
-
- *out_errors = scoped_log.GetMessages(ERROR);
- *out_warnings = scoped_log.GetMessages(WARNING);
-}
-
TEST_F(CodedStreamTest, RecursionLimit) {
ArrayInputStream input(buffer_, sizeof(buffer_));
CodedInputStream coded_input(&input);
diff --git a/src/google/protobuf/io/zero_copy_stream_impl_lite.cc b/src/google/protobuf/io/zero_copy_stream_impl_lite.cc
index 69ceaab..dd45a4c 100644
--- a/src/google/protobuf/io/zero_copy_stream_impl_lite.cc
+++ b/src/google/protobuf/io/zero_copy_stream_impl_lite.cc
@@ -181,8 +181,6 @@
return target_->size();
}
-void StringOutputStream::SetString(std::string* target) { target_ = target; }
-
// ===================================================================
int CopyingInputStream::Skip(int count) {
diff --git a/src/google/protobuf/io/zero_copy_stream_impl_lite.h b/src/google/protobuf/io/zero_copy_stream_impl_lite.h
index 14144b5..ebb2017 100644
--- a/src/google/protobuf/io/zero_copy_stream_impl_lite.h
+++ b/src/google/protobuf/io/zero_copy_stream_impl_lite.h
@@ -147,9 +147,6 @@
void BackUp(int count) override;
int64 ByteCount() const override;
- protected:
- void SetString(std::string* target);
-
private:
static const int kMinimumSize = 16;
diff --git a/src/google/protobuf/map_field_test.cc b/src/google/protobuf/map_field_test.cc
index 2b06436..dd22727 100644
--- a/src/google/protobuf/map_field_test.cc
+++ b/src/google/protobuf/map_field_test.cc
@@ -79,11 +79,13 @@
state_.store(STATE_MODIFIED_REPEATED, std::memory_order_relaxed);
}
bool ContainsMapKey(const MapKey& map_key) const override { return false; }
- bool InsertOrLookupMapValue(const MapKey& map_key, MapValueRef* val) override {
+ bool InsertOrLookupMapValue(const MapKey& map_key,
+ MapValueRef* val) override {
return false;
}
bool DeleteMapValue(const MapKey& map_key) override { return false; }
- bool EqualIterator(const MapIterator& a, const MapIterator& b) const override {
+ bool EqualIterator(const MapIterator& a,
+ const MapIterator& b) const override {
return false;
}
int size() const override { return 0; }
diff --git a/src/google/protobuf/message.h b/src/google/protobuf/message.h
index aba14f7..925c249 100644
--- a/src/google/protobuf/message.h
+++ b/src/google/protobuf/message.h
@@ -1179,21 +1179,6 @@
(void)&unused; // Use address to avoid an extra load of volatile variable.
}
-namespace internal {
-
-// Legacy functions, to preserve compatibility with existing callers.
-// These had a slightly different signature, so we have to adjust "T".
-template <typename T>
-T dynamic_cast_if_available(const Message* from) {
- return DynamicCastToGenerated<typename std::remove_pointer<T>::type>(from);
-}
-template <typename T>
-T dynamic_cast_if_available(Message* from) {
- return DynamicCastToGenerated<typename std::remove_pointer<T>::type>(from);
-}
-
-} // namespace internal
-
// =============================================================================
// Implementation details for {Get,Mutable}RawRepeatedPtrField. We provide
// specializations for <std::string>, <StringPieceField> and <Message> and
diff --git a/src/google/protobuf/util/internal/constants.h b/src/google/protobuf/util/internal/constants.h
index 3ace10c..6acf970 100644
--- a/src/google/protobuf/util/internal/constants.h
+++ b/src/google/protobuf/util/internal/constants.h
@@ -86,16 +86,9 @@
// Type URL for struct value type google.protobuf.Value
const char kStructValueTypeUrl[] = "type.googleapis.com/google.protobuf.Value";
-// Type URL for struct value type google.protobuf.Value
-const char kStructTypeUrl[] = "type.googleapis.com/google.protobuf.Struct";
-
// Type string for google.protobuf.Any
const char kAnyType[] = "google.protobuf.Any";
-// The type URL of google.protobuf.FieldMask;
-const char kFieldMaskTypeUrl[] =
- "type.googleapis.com/google.protobuf.FieldMask";
-
// The protobuf option name of jspb.message_id;
const char kOptionJspbMessageId[] = "jspb.message_id";
diff --git a/src/google/protobuf/util/internal/datapiece.h b/src/google/protobuf/util/internal/datapiece.h
index 4489f9c..e1e892b 100644
--- a/src/google/protobuf/util/internal/datapiece.h
+++ b/src/google/protobuf/util/internal/datapiece.h
@@ -154,22 +154,6 @@
util::StatusOr<std::string> ToBytes() const;
- // Converts a value into protocol buffer enum number. If the value is a
- // string, first attempts conversion by name, trying names as follows:
- // 1) the directly provided string value.
- // 2) the value upper-cased and replacing '-' by '_'
- // 3) if use_lower_camel_for_enums is true it also attempts by comparing
- // enum name without underscore with the value upper cased above.
- // If the value is not a string, attempts to convert to a 32-bit integer.
- // If none of these succeeds, returns a conversion error status.
- util::StatusOr<int> ToEnum(const google::protobuf::Enum* enum_type,
- bool use_lower_camel_for_enums) const {
- return ToEnum(enum_type, use_lower_camel_for_enums,
- /* ignore_unknown_enum_values */ false,
- /* case_insensitive_enum_parsing */ true,
- /* is_unknown_enum_value */ nullptr);
- }
-
private:
friend class ProtoWriter;
diff --git a/src/google/protobuf/util/message_differencer.cc b/src/google/protobuf/util/message_differencer.cc
index 92d113d..d241891 100644
--- a/src/google/protobuf/util/message_differencer.cc
+++ b/src/google/protobuf/util/message_differencer.cc
@@ -53,6 +53,7 @@
#include <google/protobuf/stubs/strutil.h>
+// Always include as last one, otherwise it can break compilation
#include <google/protobuf/port_def.inc>
namespace google {
@@ -512,14 +513,20 @@
bool result = false;
- std::vector<const FieldDescriptor*> message1_fields(message1_fields_arg);
- std::vector<const FieldDescriptor*> message2_fields(message2_fields_arg);
+ FieldDescriptorArray message1_fields(message1_fields_arg.size() + 1);
+ FieldDescriptorArray message2_fields(message2_fields_arg.size() + 1);
+
+ std::copy(message1_fields_arg.cbegin(), message1_fields_arg.cend(),
+ message1_fields.begin());
+ std::copy(message2_fields_arg.cbegin(), message2_fields_arg.cend(),
+ message2_fields.begin());
+
+ // Append sentinel values.
+ message1_fields[message1_fields_arg.size()] = nullptr;
+ message2_fields[message2_fields_arg.size()] = nullptr;
std::sort(message1_fields.begin(), message1_fields.end(), FieldBefore);
std::sort(message2_fields.begin(), message2_fields.end(), FieldBefore);
- // Append NULL sentinel values.
- message1_fields.push_back(NULL);
- message2_fields.push_back(NULL);
// Setup the internal reporter if need be.
if (output_string_) {
@@ -579,10 +586,8 @@
}
}
- std::vector<const FieldDescriptor*> message1_fields =
- RetrieveFields(message1, true);
- std::vector<const FieldDescriptor*> message2_fields =
- RetrieveFields(message2, false);
+ FieldDescriptorArray message1_fields = RetrieveFields(message1, true);
+ FieldDescriptorArray message2_fields = RetrieveFields(message2, false);
return CompareRequestedFieldsUsingSettings(
message1, message2,
@@ -590,48 +595,49 @@
parent_fields) && unknown_compare_result;
}
-std::vector<const FieldDescriptor*> MessageDifferencer::RetrieveFields(
- const Message& message, bool base_message) {
+FieldDescriptorArray MessageDifferencer::RetrieveFields(const Message& message,
+ bool base_message) {
const Descriptor* descriptor = message.GetDescriptor();
- std::vector<const FieldDescriptor*> message_fields;
- message_fields.reserve(descriptor->field_count() + 1);
+ tmp_message_fields_.clear();
+ tmp_message_fields_.reserve(descriptor->field_count() + 1);
const Reflection* reflection = message.GetReflection();
if (descriptor->options().map_entry()) {
if (this->scope_ == PARTIAL && base_message) {
- reflection->ListFields(message, &message_fields);
+ reflection->ListFields(message, &tmp_message_fields_);
} else {
// Map entry fields are always considered present.
for (int i = 0; i < descriptor->field_count(); i++) {
- message_fields.push_back(descriptor->field(i));
+ tmp_message_fields_.push_back(descriptor->field(i));
}
}
} else {
- reflection->ListFields(message, &message_fields);
+ reflection->ListFields(message, &tmp_message_fields_);
}
// Add sentinel values to deal with the
// case where the number of the fields in
// each list are different.
- message_fields.push_back(nullptr);
+ tmp_message_fields_.push_back(nullptr);
+
+ FieldDescriptorArray message_fields(tmp_message_fields_.begin(),
+ tmp_message_fields_.end());
return message_fields;
}
bool MessageDifferencer::CompareRequestedFieldsUsingSettings(
- const Message& message1,
- const Message& message2,
- const std::vector<const FieldDescriptor*>& message1_fields,
- const std::vector<const FieldDescriptor*>& message2_fields,
+ const Message& message1, const Message& message2,
+ const FieldDescriptorArray& message1_fields,
+ const FieldDescriptorArray& message2_fields,
std::vector<SpecificField>* parent_fields) {
if (scope_ == FULL) {
if (message_field_comparison_ == EQUIVALENT) {
// We need to merge the field lists of both messages (i.e.
// we are merely checking for a difference in field values,
// rather than the addition or deletion of fields).
- std::vector<const FieldDescriptor*> fields_union;
- CombineFields(message1_fields, FULL, message2_fields, FULL,
- &fields_union);
+ FieldDescriptorArray fields_union =
+ CombineFields(message1_fields, FULL, message2_fields, FULL);
return CompareWithFieldsInternal(message1, message2, fields_union,
fields_union, parent_fields);
} else {
@@ -651,52 +657,55 @@
// but only the intersection for message2. This way, any fields
// only present in message2 will be ignored, but any fields only
// present in message1 will be marked as a difference.
- std::vector<const FieldDescriptor*> fields_intersection;
- CombineFields(message1_fields, PARTIAL, message2_fields, PARTIAL,
- &fields_intersection);
+ FieldDescriptorArray fields_intersection =
+ CombineFields(message1_fields, PARTIAL, message2_fields, PARTIAL);
return CompareWithFieldsInternal(message1, message2, message1_fields,
fields_intersection, parent_fields);
}
}
}
-void MessageDifferencer::CombineFields(
- const std::vector<const FieldDescriptor*>& fields1,
- Scope fields1_scope,
- const std::vector<const FieldDescriptor*>& fields2,
- Scope fields2_scope,
- std::vector<const FieldDescriptor*>* combined_fields) {
-
+FieldDescriptorArray MessageDifferencer::CombineFields(
+ const FieldDescriptorArray& fields1, Scope fields1_scope,
+ const FieldDescriptorArray& fields2, Scope fields2_scope) {
int index1 = 0;
int index2 = 0;
+ tmp_message_fields_.clear();
+
while (index1 < fields1.size() && index2 < fields2.size()) {
const FieldDescriptor* field1 = fields1[index1];
const FieldDescriptor* field2 = fields2[index2];
if (FieldBefore(field1, field2)) {
if (fields1_scope == FULL) {
- combined_fields->push_back(fields1[index1]);
+ tmp_message_fields_.push_back(fields1[index1]);
}
++index1;
} else if (FieldBefore(field2, field1)) {
if (fields2_scope == FULL) {
- combined_fields->push_back(fields2[index2]);
+ tmp_message_fields_.push_back(fields2[index2]);
}
++index2;
} else {
- combined_fields->push_back(fields1[index1]);
+ tmp_message_fields_.push_back(fields1[index1]);
++index1;
++index2;
}
}
+
+ tmp_message_fields_.push_back(nullptr);
+
+ FieldDescriptorArray combined_fields(tmp_message_fields_.begin(),
+ tmp_message_fields_.end());
+
+ return combined_fields;
}
bool MessageDifferencer::CompareWithFieldsInternal(
- const Message& message1,
- const Message& message2,
- const std::vector<const FieldDescriptor*>& message1_fields,
- const std::vector<const FieldDescriptor*>& message2_fields,
+ const Message& message1, const Message& message2,
+ const FieldDescriptorArray& message1_fields,
+ const FieldDescriptorArray& message2_fields,
std::vector<SpecificField>* parent_fields) {
bool isDifferent = false;
int field_index1 = 0;
diff --git a/src/google/protobuf/util/message_differencer.h b/src/google/protobuf/util/message_differencer.h
index e36a72b..2e8a32c 100644
--- a/src/google/protobuf/util/message_differencer.h
+++ b/src/google/protobuf/util/message_differencer.h
@@ -47,11 +47,13 @@
#include <set>
#include <string>
#include <vector>
+
#include <google/protobuf/descriptor.h> // FieldDescriptor
#include <google/protobuf/message.h> // Message
#include <google/protobuf/unknown_field_set.h>
#include <google/protobuf/util/field_comparator.h>
+// Always include as last one, otherwise it can break compilation
#include <google/protobuf/port_def.inc>
namespace google {
@@ -70,6 +72,12 @@
class DefaultFieldComparator;
class FieldContext; // declared below MessageDifferencer
+// Defines a collection of field descriptors.
+// In case of internal google codebase we are using absl::FixedArray instead
+// of vector. It significantly speeds up proto comparison (by ~30%) by
+// reducing the number of malloc/free operations
+typedef std::vector<const FieldDescriptor*> FieldDescriptorArray;
+
// A basic differencer that can be used to determine
// the differences between two specified Protocol Messages. If any differences
// are found, the Compare method will return false, and any differencer reporter
@@ -697,18 +705,17 @@
const FieldDescriptor* field2);
// Retrieve all the set fields, including extensions.
- std::vector<const FieldDescriptor*> RetrieveFields(const Message& message,
- bool base_message);
+ FieldDescriptorArray RetrieveFields(const Message& message,
+ bool base_message);
// Combine the two lists of fields into the combined_fields output vector.
// All fields present in both lists will always be included in the combined
// list. Fields only present in one of the lists will only appear in the
// combined list if the corresponding fields_scope option is set to FULL.
- void CombineFields(const std::vector<const FieldDescriptor*>& fields1,
- Scope fields1_scope,
- const std::vector<const FieldDescriptor*>& fields2,
- Scope fields2_scope,
- std::vector<const FieldDescriptor*>* combined_fields);
+ FieldDescriptorArray CombineFields(const FieldDescriptorArray& fields1,
+ Scope fields1_scope,
+ const FieldDescriptorArray& fields2,
+ Scope fields2_scope);
// Internal version of the Compare method which performs the actual
// comparison. The parent_fields vector is a vector containing field
@@ -728,16 +735,16 @@
// CompareWithFieldsInternal.
bool CompareRequestedFieldsUsingSettings(
const Message& message1, const Message& message2,
- const std::vector<const FieldDescriptor*>& message1_fields,
- const std::vector<const FieldDescriptor*>& message2_fields,
+ const FieldDescriptorArray& message1_fields,
+ const FieldDescriptorArray& message2_fields,
std::vector<SpecificField>* parent_fields);
// Compares the specified messages with the specified field lists.
- bool CompareWithFieldsInternal(
- const Message& message1, const Message& message2,
- const std::vector<const FieldDescriptor*>& message1_fields,
- const std::vector<const FieldDescriptor*>& message2_fields,
- std::vector<SpecificField>* parent_fields);
+ bool CompareWithFieldsInternal(const Message& message1,
+ const Message& message2,
+ const FieldDescriptorArray& message1_fields,
+ const FieldDescriptorArray& message2_fields,
+ std::vector<SpecificField>* parent_fields);
// Compares the repeated fields, and report the error.
bool CompareRepeatedField(const Message& message1, const Message& message2,
@@ -867,6 +874,8 @@
FieldKeyComparatorMap map_field_key_comparator_;
MapEntryKeyComparator map_entry_key_comparator_;
std::vector<IgnoreCriteria*> ignore_criteria_;
+ // Reused multiple times in RetrieveFields to avoid extra allocations
+ std::vector<const FieldDescriptor*> tmp_message_fields_;
FieldSet ignored_fields_;
diff --git a/src/google/protobuf/util/type_resolver_util_test.cc b/src/google/protobuf/util/type_resolver_util_test.cc
index c453955..f9b9ad6 100644
--- a/src/google/protobuf/util/type_resolver_util_test.cc
+++ b/src/google/protobuf/util/type_resolver_util_test.cc
@@ -78,10 +78,6 @@
return NULL;
}
- bool HasField(const Type& type, const std::string& name) {
- return FindField(type, name) != NULL;
- }
-
bool HasField(const Type& type, Field::Cardinality cardinality,
Field::Kind kind, const std::string& name, int number) {
const Field* field = FindField(type, name);
diff --git a/src/google/protobuf/wire_format_lite.h b/src/google/protobuf/wire_format_lite.h
index e0972d9..c16cd27 100644
--- a/src/google/protobuf/wire_format_lite.h
+++ b/src/google/protobuf/wire_format_lite.h
@@ -338,14 +338,6 @@
static inline bool ReadMessage(io::CodedInputStream* input,
MessageType* value);
- // Do not use.
- template <typename MessageType>
- static inline bool ReadGroupNoVirtual(int field_number,
- io::CodedInputStream* input,
- MessageType* value) {
- return ReadGroup(field_number, input, value);
- }
-
template <typename MessageType>
static inline bool ReadMessageNoVirtual(io::CodedInputStream* input,
MessageType* value) {
diff --git a/src/google/protobuf/wrappers.pb.cc b/src/google/protobuf/wrappers.pb.cc
index 27daf34..695db15 100644
--- a/src/google/protobuf/wrappers.pb.cc
+++ b/src/google/protobuf/wrappers.pb.cc
@@ -460,7 +460,7 @@
(void) cached_has_bits;
// double value = 1;
- if (this->value() != 0) {
+ if (!(this->value() <= 0 && this->value() >= 0)) {
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDouble(1, this->value(), output);
}
@@ -478,7 +478,7 @@
(void) cached_has_bits;
// double value = 1;
- if (this->value() != 0) {
+ if (!(this->value() <= 0 && this->value() >= 0)) {
target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(1, this->value(), target);
}
@@ -504,7 +504,7 @@
(void) cached_has_bits;
// double value = 1;
- if (this->value() != 0) {
+ if (!(this->value() <= 0 && this->value() >= 0)) {
total_size += 1 + 8;
}
@@ -535,7 +535,7 @@
::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
(void) cached_has_bits;
- if (from.value() != 0) {
+ if (!(from.value() <= 0 && from.value() >= 0)) {
set_value(from.value());
}
}
@@ -745,7 +745,7 @@
(void) cached_has_bits;
// float value = 1;
- if (this->value() != 0) {
+ if (!(this->value() <= 0 && this->value() >= 0)) {
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloat(1, this->value(), output);
}
@@ -763,7 +763,7 @@
(void) cached_has_bits;
// float value = 1;
- if (this->value() != 0) {
+ if (!(this->value() <= 0 && this->value() >= 0)) {
target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(1, this->value(), target);
}
@@ -789,7 +789,7 @@
(void) cached_has_bits;
// float value = 1;
- if (this->value() != 0) {
+ if (!(this->value() <= 0 && this->value() >= 0)) {
total_size += 1 + 4;
}
@@ -820,7 +820,7 @@
::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
(void) cached_has_bits;
- if (from.value() != 0) {
+ if (!(from.value() <= 0 && from.value() >= 0)) {
set_value(from.value());
}
}