diff options
author | Brian Duff <bduff@google.com> | 2015-03-20 11:53:33 -0700 |
---|---|---|
committer | Brian Duff <bduff@google.com> | 2015-03-20 12:10:40 -0700 |
commit | 0e2b47592a5af00251b2478542374a0f428ae4ee (patch) | |
tree | c4a4df209a215a3678d75e8968dc837e1a44a2ff /src | |
parent | 51e32ffaa5e2ea3528a58db5d34e8a0dc0a9ac93 (diff) | |
download | external_protobuf-0e2b47592a5af00251b2478542374a0f428ae4ee.zip external_protobuf-0e2b47592a5af00251b2478542374a0f428ae4ee.tar.gz external_protobuf-0e2b47592a5af00251b2478542374a0f428ae4ee.tar.bz2 |
Inline unknownFieldData{Equals,HashCode} to generated code.
It turns out dex (apparently) was inlining these protected final
methods from ExtendableMessageNano into every message class. Removing
these methods from the base class and inlining their code reduces
the method count by 2 methods / message when the store_unknown_fields
option is on.
Change-Id: I0aa09f2016d39939c4c8b8219601793b8fab301f
Diffstat (limited to 'src')
-rw-r--r-- | src/google/protobuf/compiler/javanano/javanano_message.cc | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/google/protobuf/compiler/javanano/javanano_message.cc b/src/google/protobuf/compiler/javanano/javanano_message.cc index dcfb870..4026031 100644 --- a/src/google/protobuf/compiler/javanano/javanano_message.cc +++ b/src/google/protobuf/compiler/javanano/javanano_message.cc @@ -552,7 +552,11 @@ void MessageGenerator::GenerateEquals(io::Printer* printer) { if (params_.store_unknown_fields()) { printer->Print( - "return unknownFieldDataEquals(other);\n"); + "if (unknownFieldData == null || unknownFieldData.isEmpty()) {\n" + " return other.unknownFieldData == null || other.unknownFieldData.isEmpty();\n" + "} else {\n" + " return unknownFieldData.equals(other.unknownFieldData);\n" + "}"); } else { printer->Print( "return true;\n"); @@ -582,7 +586,9 @@ void MessageGenerator::GenerateHashCode(io::Printer* printer) { if (params_.store_unknown_fields()) { printer->Print( - "result = 31 * result + unknownFieldDataHashCode();\n"); + "result = 31 * result + \n" + " (unknownFieldData == null || unknownFieldData.isEmpty() ? 0 : \n" + " unknownFieldData.hashCode());\n"); } printer->Print("return result;\n"); |