Commit ebf0bfae authored by Sydney Acksman's avatar Sydney Acksman

Add private "_Extensions" property to speed up IsInitialized checks

parent 134242bc
...@@ -227,6 +227,7 @@ namespace ProtobufTestMessages.Proto2 { ...@@ -227,6 +227,7 @@ namespace ProtobufTestMessages.Proto2 {
private static readonly pb::MessageParser<TestAllTypesProto2> _parser = new pb::MessageParser<TestAllTypesProto2>(() => new TestAllTypesProto2()); private static readonly pb::MessageParser<TestAllTypesProto2> _parser = new pb::MessageParser<TestAllTypesProto2>(() => new TestAllTypesProto2());
private pb::UnknownFieldSet _unknownFields; private pb::UnknownFieldSet _unknownFields;
private pb::ExtensionSet<TestAllTypesProto2> _extensions; private pb::ExtensionSet<TestAllTypesProto2> _extensions;
private pb::ExtensionSet<TestAllTypesProto2> _Extensions => _extensions;
private int _hasBits0; private int _hasBits0;
private int _hasBits1; private int _hasBits1;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
...@@ -3703,6 +3704,7 @@ namespace ProtobufTestMessages.Proto2 { ...@@ -3703,6 +3704,7 @@ namespace ProtobufTestMessages.Proto2 {
private static readonly pb::MessageParser<MessageSetCorrect> _parser = new pb::MessageParser<MessageSetCorrect>(() => new MessageSetCorrect()); private static readonly pb::MessageParser<MessageSetCorrect> _parser = new pb::MessageParser<MessageSetCorrect>(() => new MessageSetCorrect());
private pb::UnknownFieldSet _unknownFields; private pb::UnknownFieldSet _unknownFields;
private pb::ExtensionSet<MessageSetCorrect> _extensions; private pb::ExtensionSet<MessageSetCorrect> _extensions;
private pb::ExtensionSet<MessageSetCorrect> _Extensions => _extensions;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public static pb::MessageParser<MessageSetCorrect> Parser { get { return _parser; } } public static pb::MessageParser<MessageSetCorrect> Parser { get { return _parser; } }
......
...@@ -5139,6 +5139,7 @@ namespace Google.Protobuf.TestProtos.Proto2 { ...@@ -5139,6 +5139,7 @@ namespace Google.Protobuf.TestProtos.Proto2 {
private static readonly pb::MessageParser<TestAllExtensions> _parser = new pb::MessageParser<TestAllExtensions>(() => new TestAllExtensions()); private static readonly pb::MessageParser<TestAllExtensions> _parser = new pb::MessageParser<TestAllExtensions>(() => new TestAllExtensions());
private pb::UnknownFieldSet _unknownFields; private pb::UnknownFieldSet _unknownFields;
private pb::ExtensionSet<TestAllExtensions> _extensions; private pb::ExtensionSet<TestAllExtensions> _extensions;
private pb::ExtensionSet<TestAllExtensions> _Extensions => _extensions;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public static pb::MessageParser<TestAllExtensions> Parser { get { return _parser; } } public static pb::MessageParser<TestAllExtensions> Parser { get { return _parser; } }
...@@ -5913,6 +5914,7 @@ namespace Google.Protobuf.TestProtos.Proto2 { ...@@ -5913,6 +5914,7 @@ namespace Google.Protobuf.TestProtos.Proto2 {
private static readonly pb::MessageParser<TestGroupExtension> _parser = new pb::MessageParser<TestGroupExtension>(() => new TestGroupExtension()); private static readonly pb::MessageParser<TestGroupExtension> _parser = new pb::MessageParser<TestGroupExtension>(() => new TestGroupExtension());
private pb::UnknownFieldSet _unknownFields; private pb::UnknownFieldSet _unknownFields;
private pb::ExtensionSet<TestGroupExtension> _extensions; private pb::ExtensionSet<TestGroupExtension> _extensions;
private pb::ExtensionSet<TestGroupExtension> _Extensions => _extensions;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public static pb::MessageParser<TestGroupExtension> Parser { get { return _parser; } } public static pb::MessageParser<TestGroupExtension> Parser { get { return _parser; } }
...@@ -8483,6 +8485,7 @@ namespace Google.Protobuf.TestProtos.Proto2 { ...@@ -8483,6 +8485,7 @@ namespace Google.Protobuf.TestProtos.Proto2 {
private static readonly pb::MessageParser<TestEmptyMessageWithExtensions> _parser = new pb::MessageParser<TestEmptyMessageWithExtensions>(() => new TestEmptyMessageWithExtensions()); private static readonly pb::MessageParser<TestEmptyMessageWithExtensions> _parser = new pb::MessageParser<TestEmptyMessageWithExtensions>(() => new TestEmptyMessageWithExtensions());
private pb::UnknownFieldSet _unknownFields; private pb::UnknownFieldSet _unknownFields;
private pb::ExtensionSet<TestEmptyMessageWithExtensions> _extensions; private pb::ExtensionSet<TestEmptyMessageWithExtensions> _extensions;
private pb::ExtensionSet<TestEmptyMessageWithExtensions> _Extensions => _extensions;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public static pb::MessageParser<TestEmptyMessageWithExtensions> Parser { get { return _parser; } } public static pb::MessageParser<TestEmptyMessageWithExtensions> Parser { get { return _parser; } }
...@@ -8623,6 +8626,7 @@ namespace Google.Protobuf.TestProtos.Proto2 { ...@@ -8623,6 +8626,7 @@ namespace Google.Protobuf.TestProtos.Proto2 {
private static readonly pb::MessageParser<TestMultipleExtensionRanges> _parser = new pb::MessageParser<TestMultipleExtensionRanges>(() => new TestMultipleExtensionRanges()); private static readonly pb::MessageParser<TestMultipleExtensionRanges> _parser = new pb::MessageParser<TestMultipleExtensionRanges>(() => new TestMultipleExtensionRanges());
private pb::UnknownFieldSet _unknownFields; private pb::UnknownFieldSet _unknownFields;
private pb::ExtensionSet<TestMultipleExtensionRanges> _extensions; private pb::ExtensionSet<TestMultipleExtensionRanges> _extensions;
private pb::ExtensionSet<TestMultipleExtensionRanges> _Extensions => _extensions;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public static pb::MessageParser<TestMultipleExtensionRanges> Parser { get { return _parser; } } public static pb::MessageParser<TestMultipleExtensionRanges> Parser { get { return _parser; } }
...@@ -11932,6 +11936,7 @@ namespace Google.Protobuf.TestProtos.Proto2 { ...@@ -11932,6 +11936,7 @@ namespace Google.Protobuf.TestProtos.Proto2 {
private static readonly pb::MessageParser<TestFieldOrderings> _parser = new pb::MessageParser<TestFieldOrderings>(() => new TestFieldOrderings()); private static readonly pb::MessageParser<TestFieldOrderings> _parser = new pb::MessageParser<TestFieldOrderings>(() => new TestFieldOrderings());
private pb::UnknownFieldSet _unknownFields; private pb::UnknownFieldSet _unknownFields;
private pb::ExtensionSet<TestFieldOrderings> _extensions; private pb::ExtensionSet<TestFieldOrderings> _extensions;
private pb::ExtensionSet<TestFieldOrderings> _Extensions => _extensions;
private int _hasBits0; private int _hasBits0;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public static pb::MessageParser<TestFieldOrderings> Parser { get { return _parser; } } public static pb::MessageParser<TestFieldOrderings> Parser { get { return _parser; } }
...@@ -19245,6 +19250,7 @@ namespace Google.Protobuf.TestProtos.Proto2 { ...@@ -19245,6 +19250,7 @@ namespace Google.Protobuf.TestProtos.Proto2 {
private static readonly pb::MessageParser<TestPackedExtensions> _parser = new pb::MessageParser<TestPackedExtensions>(() => new TestPackedExtensions()); private static readonly pb::MessageParser<TestPackedExtensions> _parser = new pb::MessageParser<TestPackedExtensions>(() => new TestPackedExtensions());
private pb::UnknownFieldSet _unknownFields; private pb::UnknownFieldSet _unknownFields;
private pb::ExtensionSet<TestPackedExtensions> _extensions; private pb::ExtensionSet<TestPackedExtensions> _extensions;
private pb::ExtensionSet<TestPackedExtensions> _Extensions => _extensions;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public static pb::MessageParser<TestPackedExtensions> Parser { get { return _parser; } } public static pb::MessageParser<TestPackedExtensions> Parser { get { return _parser; } }
...@@ -19385,6 +19391,7 @@ namespace Google.Protobuf.TestProtos.Proto2 { ...@@ -19385,6 +19391,7 @@ namespace Google.Protobuf.TestProtos.Proto2 {
private static readonly pb::MessageParser<TestUnpackedExtensions> _parser = new pb::MessageParser<TestUnpackedExtensions>(() => new TestUnpackedExtensions()); private static readonly pb::MessageParser<TestUnpackedExtensions> _parser = new pb::MessageParser<TestUnpackedExtensions>(() => new TestUnpackedExtensions());
private pb::UnknownFieldSet _unknownFields; private pb::UnknownFieldSet _unknownFields;
private pb::ExtensionSet<TestUnpackedExtensions> _extensions; private pb::ExtensionSet<TestUnpackedExtensions> _extensions;
private pb::ExtensionSet<TestUnpackedExtensions> _Extensions => _extensions;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public static pb::MessageParser<TestUnpackedExtensions> Parser { get { return _parser; } } public static pb::MessageParser<TestUnpackedExtensions> Parser { get { return _parser; } }
...@@ -20287,6 +20294,7 @@ namespace Google.Protobuf.TestProtos.Proto2 { ...@@ -20287,6 +20294,7 @@ namespace Google.Protobuf.TestProtos.Proto2 {
private static readonly pb::MessageParser<TestParsingMerge> _parser = new pb::MessageParser<TestParsingMerge>(() => new TestParsingMerge()); private static readonly pb::MessageParser<TestParsingMerge> _parser = new pb::MessageParser<TestParsingMerge>(() => new TestParsingMerge());
private pb::UnknownFieldSet _unknownFields; private pb::UnknownFieldSet _unknownFields;
private pb::ExtensionSet<TestParsingMerge> _extensions; private pb::ExtensionSet<TestParsingMerge> _extensions;
private pb::ExtensionSet<TestParsingMerge> _Extensions => _extensions;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public static pb::MessageParser<TestParsingMerge> Parser { get { return _parser; } } public static pb::MessageParser<TestParsingMerge> Parser { get { return _parser; } }
...@@ -22563,6 +22571,7 @@ namespace Google.Protobuf.TestProtos.Proto2 { ...@@ -22563,6 +22571,7 @@ namespace Google.Protobuf.TestProtos.Proto2 {
private static readonly pb::MessageParser<TestHugeFieldNumbers> _parser = new pb::MessageParser<TestHugeFieldNumbers>(() => new TestHugeFieldNumbers()); private static readonly pb::MessageParser<TestHugeFieldNumbers> _parser = new pb::MessageParser<TestHugeFieldNumbers>(() => new TestHugeFieldNumbers());
private pb::UnknownFieldSet _unknownFields; private pb::UnknownFieldSet _unknownFields;
private pb::ExtensionSet<TestHugeFieldNumbers> _extensions; private pb::ExtensionSet<TestHugeFieldNumbers> _extensions;
private pb::ExtensionSet<TestHugeFieldNumbers> _Extensions => _extensions;
private int _hasBits0; private int _hasBits0;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public static pb::MessageParser<TestHugeFieldNumbers> Parser { get { return _parser; } } public static pb::MessageParser<TestHugeFieldNumbers> Parser { get { return _parser; } }
...@@ -23417,6 +23426,7 @@ namespace Google.Protobuf.TestProtos.Proto2 { ...@@ -23417,6 +23426,7 @@ namespace Google.Protobuf.TestProtos.Proto2 {
private static readonly pb::MessageParser<TestExtensionInsideTable> _parser = new pb::MessageParser<TestExtensionInsideTable>(() => new TestExtensionInsideTable()); private static readonly pb::MessageParser<TestExtensionInsideTable> _parser = new pb::MessageParser<TestExtensionInsideTable>(() => new TestExtensionInsideTable());
private pb::UnknownFieldSet _unknownFields; private pb::UnknownFieldSet _unknownFields;
private pb::ExtensionSet<TestExtensionInsideTable> _extensions; private pb::ExtensionSet<TestExtensionInsideTable> _extensions;
private pb::ExtensionSet<TestExtensionInsideTable> _Extensions => _extensions;
private int _hasBits0; private int _hasBits0;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public static pb::MessageParser<TestExtensionInsideTable> Parser { get { return _parser; } } public static pb::MessageParser<TestExtensionInsideTable> Parser { get { return _parser; } }
......
...@@ -1591,6 +1591,7 @@ namespace Google.Protobuf.Reflection { ...@@ -1591,6 +1591,7 @@ namespace Google.Protobuf.Reflection {
private static readonly pb::MessageParser<ExtensionRangeOptions> _parser = new pb::MessageParser<ExtensionRangeOptions>(() => new ExtensionRangeOptions()); private static readonly pb::MessageParser<ExtensionRangeOptions> _parser = new pb::MessageParser<ExtensionRangeOptions>(() => new ExtensionRangeOptions());
private pb::UnknownFieldSet _unknownFields; private pb::UnknownFieldSet _unknownFields;
internal pb::ExtensionSet<ExtensionRangeOptions> _extensions; internal pb::ExtensionSet<ExtensionRangeOptions> _extensions;
private pb::ExtensionSet<ExtensionRangeOptions> _Extensions => _extensions;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public static pb::MessageParser<ExtensionRangeOptions> Parser { get { return _parser; } } public static pb::MessageParser<ExtensionRangeOptions> Parser { get { return _parser; } }
...@@ -3819,6 +3820,7 @@ namespace Google.Protobuf.Reflection { ...@@ -3819,6 +3820,7 @@ namespace Google.Protobuf.Reflection {
private static readonly pb::MessageParser<FileOptions> _parser = new pb::MessageParser<FileOptions>(() => new FileOptions()); private static readonly pb::MessageParser<FileOptions> _parser = new pb::MessageParser<FileOptions>(() => new FileOptions());
private pb::UnknownFieldSet _unknownFields; private pb::UnknownFieldSet _unknownFields;
internal pb::ExtensionSet<FileOptions> _extensions; internal pb::ExtensionSet<FileOptions> _extensions;
private pb::ExtensionSet<FileOptions> _Extensions => _extensions;
private int _hasBits0; private int _hasBits0;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public static pb::MessageParser<FileOptions> Parser { get { return _parser; } } public static pb::MessageParser<FileOptions> Parser { get { return _parser; } }
...@@ -4916,6 +4918,7 @@ namespace Google.Protobuf.Reflection { ...@@ -4916,6 +4918,7 @@ namespace Google.Protobuf.Reflection {
private static readonly pb::MessageParser<MessageOptions> _parser = new pb::MessageParser<MessageOptions>(() => new MessageOptions()); private static readonly pb::MessageParser<MessageOptions> _parser = new pb::MessageParser<MessageOptions>(() => new MessageOptions());
private pb::UnknownFieldSet _unknownFields; private pb::UnknownFieldSet _unknownFields;
internal pb::ExtensionSet<MessageOptions> _extensions; internal pb::ExtensionSet<MessageOptions> _extensions;
private pb::ExtensionSet<MessageOptions> _Extensions => _extensions;
private int _hasBits0; private int _hasBits0;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public static pb::MessageParser<MessageOptions> Parser { get { return _parser; } } public static pb::MessageParser<MessageOptions> Parser { get { return _parser; } }
...@@ -5299,6 +5302,7 @@ namespace Google.Protobuf.Reflection { ...@@ -5299,6 +5302,7 @@ namespace Google.Protobuf.Reflection {
private static readonly pb::MessageParser<FieldOptions> _parser = new pb::MessageParser<FieldOptions>(() => new FieldOptions()); private static readonly pb::MessageParser<FieldOptions> _parser = new pb::MessageParser<FieldOptions>(() => new FieldOptions());
private pb::UnknownFieldSet _unknownFields; private pb::UnknownFieldSet _unknownFields;
internal pb::ExtensionSet<FieldOptions> _extensions; internal pb::ExtensionSet<FieldOptions> _extensions;
private pb::ExtensionSet<FieldOptions> _Extensions => _extensions;
private int _hasBits0; private int _hasBits0;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public static pb::MessageParser<FieldOptions> Parser { get { return _parser; } } public static pb::MessageParser<FieldOptions> Parser { get { return _parser; } }
...@@ -5805,6 +5809,7 @@ namespace Google.Protobuf.Reflection { ...@@ -5805,6 +5809,7 @@ namespace Google.Protobuf.Reflection {
private static readonly pb::MessageParser<OneofOptions> _parser = new pb::MessageParser<OneofOptions>(() => new OneofOptions()); private static readonly pb::MessageParser<OneofOptions> _parser = new pb::MessageParser<OneofOptions>(() => new OneofOptions());
private pb::UnknownFieldSet _unknownFields; private pb::UnknownFieldSet _unknownFields;
internal pb::ExtensionSet<OneofOptions> _extensions; internal pb::ExtensionSet<OneofOptions> _extensions;
private pb::ExtensionSet<OneofOptions> _Extensions => _extensions;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public static pb::MessageParser<OneofOptions> Parser { get { return _parser; } } public static pb::MessageParser<OneofOptions> Parser { get { return _parser; } }
...@@ -5968,6 +5973,7 @@ namespace Google.Protobuf.Reflection { ...@@ -5968,6 +5973,7 @@ namespace Google.Protobuf.Reflection {
private static readonly pb::MessageParser<EnumOptions> _parser = new pb::MessageParser<EnumOptions>(() => new EnumOptions()); private static readonly pb::MessageParser<EnumOptions> _parser = new pb::MessageParser<EnumOptions>(() => new EnumOptions());
private pb::UnknownFieldSet _unknownFields; private pb::UnknownFieldSet _unknownFields;
internal pb::ExtensionSet<EnumOptions> _extensions; internal pb::ExtensionSet<EnumOptions> _extensions;
private pb::ExtensionSet<EnumOptions> _Extensions => _extensions;
private int _hasBits0; private int _hasBits0;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public static pb::MessageParser<EnumOptions> Parser { get { return _parser; } } public static pb::MessageParser<EnumOptions> Parser { get { return _parser; } }
...@@ -6225,6 +6231,7 @@ namespace Google.Protobuf.Reflection { ...@@ -6225,6 +6231,7 @@ namespace Google.Protobuf.Reflection {
private static readonly pb::MessageParser<EnumValueOptions> _parser = new pb::MessageParser<EnumValueOptions>(() => new EnumValueOptions()); private static readonly pb::MessageParser<EnumValueOptions> _parser = new pb::MessageParser<EnumValueOptions>(() => new EnumValueOptions());
private pb::UnknownFieldSet _unknownFields; private pb::UnknownFieldSet _unknownFields;
internal pb::ExtensionSet<EnumValueOptions> _extensions; internal pb::ExtensionSet<EnumValueOptions> _extensions;
private pb::ExtensionSet<EnumValueOptions> _Extensions => _extensions;
private int _hasBits0; private int _hasBits0;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public static pb::MessageParser<EnumValueOptions> Parser { get { return _parser; } } public static pb::MessageParser<EnumValueOptions> Parser { get { return _parser; } }
...@@ -6437,6 +6444,7 @@ namespace Google.Protobuf.Reflection { ...@@ -6437,6 +6444,7 @@ namespace Google.Protobuf.Reflection {
private static readonly pb::MessageParser<ServiceOptions> _parser = new pb::MessageParser<ServiceOptions>(() => new ServiceOptions()); private static readonly pb::MessageParser<ServiceOptions> _parser = new pb::MessageParser<ServiceOptions>(() => new ServiceOptions());
private pb::UnknownFieldSet _unknownFields; private pb::UnknownFieldSet _unknownFields;
internal pb::ExtensionSet<ServiceOptions> _extensions; internal pb::ExtensionSet<ServiceOptions> _extensions;
private pb::ExtensionSet<ServiceOptions> _Extensions => _extensions;
private int _hasBits0; private int _hasBits0;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public static pb::MessageParser<ServiceOptions> Parser { get { return _parser; } } public static pb::MessageParser<ServiceOptions> Parser { get { return _parser; } }
...@@ -6649,6 +6657,7 @@ namespace Google.Protobuf.Reflection { ...@@ -6649,6 +6657,7 @@ namespace Google.Protobuf.Reflection {
private static readonly pb::MessageParser<MethodOptions> _parser = new pb::MessageParser<MethodOptions>(() => new MethodOptions()); private static readonly pb::MessageParser<MethodOptions> _parser = new pb::MessageParser<MethodOptions>(() => new MethodOptions());
private pb::UnknownFieldSet _unknownFields; private pb::UnknownFieldSet _unknownFields;
internal pb::ExtensionSet<MethodOptions> _extensions; internal pb::ExtensionSet<MethodOptions> _extensions;
private pb::ExtensionSet<MethodOptions> _Extensions => _extensions;
private int _hasBits0; private int _hasBits0;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public static pb::MessageParser<MethodOptions> Parser { get { return _parser; } } public static pb::MessageParser<MethodOptions> Parser { get { return _parser; } }
......
...@@ -312,14 +312,19 @@ namespace Google.Protobuf.Reflection ...@@ -312,14 +312,19 @@ namespace Google.Protobuf.Reflection
{ {
public Func<IMessage, bool> CreateIsInitializedCaller() public Func<IMessage, bool> CreateIsInitializedCaller()
{ {
var field = typeof(T1).GetTypeInfo().GetDeclaredField("_extensions"); var prop = typeof(T1).GetTypeInfo().GetDeclaredProperty("_Extensions");
#if NET35
var getFunc = (Func<T1, ExtensionSet<T1>>)prop.GetGetMethod(true).CreateDelegate(typeof(Func<T1, ExtensionSet<T1>>));
#else
var getFunc = (Func<T1, ExtensionSet<T1>>)prop.GetMethod.CreateDelegate(typeof(Func<T1, ExtensionSet<T1>>));
#endif
var initializedFunc = (Func<ExtensionSet<T1>, bool>) var initializedFunc = (Func<ExtensionSet<T1>, bool>)
typeof(ExtensionSet<T1>) typeof(ExtensionSet<T1>)
.GetTypeInfo() .GetTypeInfo()
.GetDeclaredMethod("IsInitialized") .GetDeclaredMethod("IsInitialized")
.CreateDelegate(typeof(Func<ExtensionSet<T1>, bool>)); .CreateDelegate(typeof(Func<ExtensionSet<T1>, bool>));
return (m) => { return (m) => {
var set = field.GetValue(m) as ExtensionSet<T1>; var set = getFunc((T1)m);
return set == null || initializedFunc(set); return set == null || initializedFunc(set);
}; };
} }
......
...@@ -149,6 +149,8 @@ void MessageGenerator::Generate(io::Printer* printer) { ...@@ -149,6 +149,8 @@ void MessageGenerator::Generate(io::Printer* printer) {
} else { } else {
printer->Print(vars, "private pb::ExtensionSet<$class_name$> _extensions;\n"); printer->Print(vars, "private pb::ExtensionSet<$class_name$> _extensions;\n");
} }
printer->Print(vars, "private pb::ExtensionSet<$class_name$> _Extensions => _extensions;\n"); // a read-only property for fast retrieval of the set in IsInitialized
} }
for (int i = 0; i < has_bit_field_count_; i++) { for (int i = 0; i < has_bit_field_count_; i++) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment