aboutsummaryrefslogtreecommitdiff
path: root/src/google/protobuf/compiler/csharp/csharp_message_field.cc
diff options
context:
space:
mode:
authorJon Skeet <skeet@pobox.com>2015-06-17 14:59:10 +0100
committerJon Skeet <skeet@pobox.com>2015-06-17 14:59:10 +0100
commit828b7e61d0443832d99002fbda12a359e5f9f221 (patch)
tree1f271cdb345b968dba08947b9319ba7d738f3476 /src/google/protobuf/compiler/csharp/csharp_message_field.cc
parentfb1547b3884ace3be6acf9e947686d627ff90179 (diff)
downloadprotobuf-828b7e61d0443832d99002fbda12a359e5f9f221.tar.gz
protobuf-828b7e61d0443832d99002fbda12a359e5f9f221.tar.bz2
protobuf-828b7e61d0443832d99002fbda12a359e5f9f221.zip
Use the fact that we know the tag size and bytes at codegen time to optimize.
Diffstat (limited to 'src/google/protobuf/compiler/csharp/csharp_message_field.cc')
-rw-r--r--src/google/protobuf/compiler/csharp/csharp_message_field.cc6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/google/protobuf/compiler/csharp/csharp_message_field.cc b/src/google/protobuf/compiler/csharp/csharp_message_field.cc
index 804a5ae2..bd67aa0f 100644
--- a/src/google/protobuf/compiler/csharp/csharp_message_field.cc
+++ b/src/google/protobuf/compiler/csharp/csharp_message_field.cc
@@ -92,11 +92,11 @@ void MessageFieldGenerator::GenerateParsingCode(io::Printer* printer) {
}
void MessageFieldGenerator::GenerateSerializationCode(io::Printer* printer) {
- // TODO(jonskeet): Why are we using array access instead of a literal here?
printer->Print(
variables_,
"if ($has_property_check$) {\n"
- " output.WriteMessage($number$, $property_name$);\n"
+ " output.WriteRawTag($tag_bytes$);\n"
+ " output.WriteMessage($property_name$);\n"
"}\n");
}
@@ -104,7 +104,7 @@ void MessageFieldGenerator::GenerateSerializedSizeCode(io::Printer* printer) {
printer->Print(
variables_,
"if ($has_property_check$) {\n"
- " size += pb::CodedOutputStream.ComputeMessageSize($number$, $property_name$);\n"
+ " size += $tag_size$ + pb::CodedOutputStream.ComputeMessageSize($property_name$);\n"
"}\n");
}