4 writes to _ilg
System.Private.DataContractSerialization (4)
System\Runtime\Serialization\XmlFormatReaderGenerator.cs (4)
88
_ilg
= new CodeGenerator();
180
_ilg
= GenerateCollectionReaderHelper(collectionContract, false /*isGetOnlyCollection*/);
205
_ilg
= GenerateCollectionReaderHelper(collectionContract, true /*isGetOnlyCollection*/);
214
_ilg
= new CodeGenerator();
265 references to _ilg
System.Private.DataContractSerialization (265)
System\Runtime\Serialization\XmlFormatReaderGenerator.cs (265)
92
_ilg
.BeginMethod("Read" + classContract.XmlName.Name + "FromXml", typeof(XmlFormatClassReaderDelegate), memberAccessFlag);
108
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.AddNewObjectMethod, _objectLocal);
113
objectId =
_ilg
.DeclareLocal(typeof(string));
114
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.GetObjectIdMethod);
115
_ilg
.Stloc(objectId);
130
_ilg
.Call(_objectLocal, XmlFormatGeneratorStatics.OnDeserializationMethod, null);
136
_ilg
.Load(_objectLocal);
144
_ilg
.ConvertValue(_objectLocal.LocalType, typeof(DateTimeOffsetAdapter));
145
_ilg
.Call(XmlFormatGeneratorStatics.GetDateTimeOffsetMethod);
146
_ilg
.ConvertValue(typeof(DateTimeOffset),
_ilg
.CurrentMethod.ReturnType);
150
_ilg
.ConvertValue(_objectLocal.LocalType, typeof(MemoryStreamAdapter));
151
_ilg
.Call(XmlFormatGeneratorStatics.GetMemoryStreamMethod);
152
_ilg
.ConvertValue(typeof(System.IO.MemoryStream),
_ilg
.CurrentMethod.ReturnType);
156
_ilg
.ConvertValue(_objectLocal.LocalType,
_ilg
.CurrentMethod.ReturnType);
159
return (XmlFormatClassReaderDelegate)
_ilg
.EndMethod();
182
_ilg
.Load(_objectLocal);
183
_ilg
.ConvertValue(_objectLocal.LocalType,
_ilg
.CurrentMethod.ReturnType);
184
return (XmlFormatCollectionReaderDelegate)
_ilg
.EndMethod();
207
return (XmlFormatGetOnlyCollectionReaderDelegate)
_ilg
.EndMethod();
220
_ilg
.BeginMethod("Read" + collectionContract.XmlName.Name + "FromXml" + "IsGetOnly", typeof(XmlFormatGetOnlyCollectionReaderDelegate), memberAccessFlag);
224
_ilg
.BeginMethod("Read" + collectionContract.XmlName.Name + "FromXml" + string.Empty, typeof(XmlFormatCollectionReaderDelegate), memberAccessFlag);
239
_collectionContractArg =
_ilg
.GetArg(4);
240
return
_ilg
;
245
_xmlReaderArg =
_ilg
.GetArg(0);
246
_contextArg =
_ilg
.GetArg(1);
247
_memberNamesArg =
_ilg
.GetArg(2);
248
_memberNamespacesArg =
_ilg
.GetArg(3);
260
_objectLocal =
_ilg
.DeclareLocal(type);
264
_ilg
.LoadMember(GetDBNullValueField());
265
_ilg
.Stloc(_objectLocal);
271
_ilg
.Ldloca(_objectLocal);
272
_ilg
.InitObj(type);
276
_ilg
.New(classContract.GetNonAttributedTypeConstructor()!);
277
_ilg
.Stloc(_objectLocal);
282
_ilg
.Call(null, XmlFormatGeneratorStatics.GetUninitializedObjectMethod, DataContract.GetIdForInitialization(classContract));
283
_ilg
.ConvertValue(typeof(object), type);
284
_ilg
.Stloc(_objectLocal);
299
_ilg
.LoadAddress(_objectLocal);
300
_ilg
.ConvertAddress(_objectLocal.LocalType, _objectType);
301
_ilg
.Load(_contextArg);
302
_ilg
.LoadMember(XmlFormatGeneratorStatics.GetStreamingContextMethod);
303
_ilg
.Call(classContract.OnDeserializing);
316
_ilg
.LoadAddress(_objectLocal);
317
_ilg
.ConvertAddress(_objectLocal.LocalType, _objectType);
318
_ilg
.Load(_contextArg);
319
_ilg
.LoadMember(XmlFormatGeneratorStatics.GetStreamingContextMethod);
320
_ilg
.Call(classContract.OnDeserialized);
337
_ilg
.Load(_contextArg);
338
_ilg
.LoadAddress(_objectLocal);
340
_ilg
.ConvertAddress(_objectLocal.LocalType, typeof(IObjectReference));
342
_ilg
.Load(objectId);
343
_ilg
.Call(XmlFormatGeneratorStatics.GetRealObjectMethod);
344
_ilg
.ConvertValue(typeof(object),
_ilg
.CurrentMethod.ReturnType);
357
LocalBuilder extensionDataLocal =
_ilg
.DeclareLocal(typeof(ExtensionDataObject));
358
_ilg
.New(XmlFormatGeneratorStatics.ExtensionDataObjectCtor);
359
_ilg
.Store(extensionDataLocal);
367
_ilg
.Call(_objectLocal, extensionDataSetMethod, extensionDataLocal);
382
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.IncrementItemCountMethod, memberCount);
384
LocalBuilder memberIndexLocal =
_ilg
.DeclareLocal(typeof(int), -1);
389
LocalBuilder? requiredIndexLocal = hasRequiredMembers ?
_ilg
.DeclareLocal(typeof(int), firstRequiredMember) : null;
391
object forReadElements =
_ilg
.For(null, null, null);
392
_ilg
.Call(null, XmlFormatGeneratorStatics.MoveToNextElementMethod, _xmlReaderArg);
393
_ilg
.IfFalseBreak(forReadElements);
395
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.GetMemberIndexWithRequiredMembersMethod, _xmlReaderArg, _memberNamesArg, _memberNamespacesArg, memberIndexLocal, requiredIndexLocal, extensionDataLocal);
397
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.GetMemberIndexMethod, _xmlReaderArg, _memberNamesArg, _memberNamespacesArg, memberIndexLocal, extensionDataLocal);
400
Label[] memberLabels =
_ilg
.Switch(memberCount);
402
_ilg
.EndSwitch();
406
_ilg
.Pop();
408
_ilg
.EndFor();
411
_ilg
.If(requiredIndexLocal!, Cmp.LessThan, memberCount);
412
_ilg
.Call(null, XmlFormatGeneratorStatics.ThrowRequiredMemberMissingExceptionMethod, _xmlReaderArg, memberIndexLocal, requiredIndexLocal, _memberNamesArg);
413
_ilg
.EndIf();
431
_ilg
.Case(memberLabels[memberCount]);
438
_ilg
.Set(requiredIndexLocal!, nextRequiredIndex);
445
_ilg
.LoadAddress(_objectLocal);
446
_ilg
.LoadMember(dataMember.MemberInfo);
447
value =
_ilg
.DeclareLocal(memberType);
448
_ilg
.Stloc(value);
449
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.StoreCollectionMemberInfoMethod, value);
454
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.ResetCollectionMemberInfoMethod);
456
_ilg
.LoadAddress(_objectLocal);
457
_ilg
.ConvertAddress(_objectLocal.LocalType, _objectType);
458
_ilg
.Ldloc(value);
459
_ilg
.StoreMember(dataMember.MemberInfo);
462
_ilg
.Set(memberIndexLocal, memberCount);
464
_ilg
.EndCase();
498
_ilg
.LoadAddress(_objectLocal);
499
_ilg
.ConvertAddress(_objectLocal.LocalType, _objectType);
500
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.ReadSerializationInfoMethod, _xmlReaderArg, classContract.UnderlyingType);
501
_ilg
.Load(_contextArg);
502
_ilg
.LoadMember(XmlFormatGeneratorStatics.GetStreamingContextMethod);
503
_ilg
.Call(ctor);
510
LocalBuilder value =
_ilg
.DeclareLocal(type);
522
LocalBuilder objectId =
_ilg
.DeclareLocal(typeof(string));
523
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.ReadAttributesMethod, _xmlReaderArg);
524
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.ReadIfNullOrRefMethod, _xmlReaderArg, type, DataContract.IsTypeSerializable(type));
525
_ilg
.Stloc(objectId);
527
_ilg
.If(objectId, Cmp.EqualTo, Globals.NullObjectId);
530
_ilg
.LoadAddress(value);
531
_ilg
.InitObj(value.LocalType);
537
_ilg
.Load(null);
538
_ilg
.Stloc(value);
544
_ilg
.ElseIfIsEmptyString(objectId);
545
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.GetObjectIdMethod);
546
_ilg
.Stloc(objectId);
549
_ilg
.IfNotIsEmptyString(objectId);
551
_ilg
.EndIf();
556
value =
_ilg
.DeclareLocal(type);
561
_ilg
.Call(_xmlReaderArg, primitiveContract.XmlFormatReaderMethod);
562
_ilg
.Stloc(value);
564
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.AddNewObjectMethod, value);
571
_ilg
.Else();
576
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.GetExistingObjectMethod, objectId, type, name, ns);
577
_ilg
.ConvertValue(typeof(object), type);
578
_ilg
.Stloc(value);
580
_ilg
.EndIf();
584
_ilg
.If(objectId, Cmp.NotEqualTo, Globals.NullObjectId);
586
_ilg
.EndIf();
601
_ilg
.Load(_contextArg);
602
_ilg
.Load(_xmlReaderArg);
604
_ilg
.Load(DataContract.GetId(declaredType.TypeHandle));
605
_ilg
.Ldtoken(declaredType);
606
_ilg
.Load(name);
607
_ilg
.Load(ns);
608
_ilg
.Call(XmlFormatGeneratorStatics.InternalDeserializeMethod);
611
_ilg
.Call(XmlFormatGeneratorStatics.UnboxPointer);
613
_ilg
.ConvertValue(typeof(object), type);
615
_ilg
.Stloc(value);
623
_ilg
.LoadAddress(outerValue);
624
_ilg
.Load(innerValue);
628
_ilg
.New(type.GetConstructor(new Type[] { innerType })!);
631
_ilg
.Call(outerType.GetConstructor(new Type[] { innerType })!);
671
_objectLocal =
_ilg
.DeclareLocal(type);
676
_ilg
.Ldloca(_objectLocal);
677
_ilg
.InitObj(type);
681
_ilg
.New(constructor);
682
_ilg
.Stloc(_objectLocal);
683
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.AddNewObjectMethod, _objectLocal);
687
LocalBuilder size =
_ilg
.DeclareLocal(typeof(int));
688
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.GetArraySizeMethod);
689
_ilg
.Stloc(size);
691
LocalBuilder objectId =
_ilg
.DeclareLocal(typeof(string));
692
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.GetObjectIdMethod);
693
_ilg
.Stloc(objectId);
699
_ilg
.IfNot();
702
_ilg
.If(size, Cmp.EqualTo, -1);
707
growingCollection =
_ilg
.DeclareLocal(type);
708
_ilg
.NewArray(itemType, 32);
709
_ilg
.Stloc(growingCollection);
711
LocalBuilder i =
_ilg
.DeclareLocal(typeof(int));
712
object forLoop =
_ilg
.For(i, 0, int.MaxValue);
714
_ilg
.If();
715
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.IncrementItemCountMethod, 1);
721
_ilg
.Call(null, ensureArraySizeMethod, growingCollection, i);
722
_ilg
.Stloc(growingCollection);
723
_ilg
.StoreArrayElement(growingCollection, i, value);
727
_ilg
.Else();
729
_ilg
.If();
730
_ilg
.Break(forLoop);
731
_ilg
.Else();
733
_ilg
.EndIf();
734
_ilg
.EndIf();
736
_ilg
.EndFor();
740
_ilg
.Call(null, trimArraySizeMethod, growingCollection, i);
741
_ilg
.Stloc(_objectLocal);
742
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.AddNewObjectWithIdMethod, objectId, _objectLocal);
744
_ilg
.Else();
746
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.IncrementItemCountMethod, size);
749
_ilg
.NewArray(itemType, size);
750
_ilg
.Stloc(_objectLocal);
751
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.AddNewObjectMethod, _objectLocal);
753
LocalBuilder j =
_ilg
.DeclareLocal(typeof(int));
754
_ilg
.For(j, 0, size);
756
_ilg
.If();
759
_ilg
.StoreArrayElement(_objectLocal, j, itemValue);
762
_ilg
.Else();
764
_ilg
.EndIf();
765
_ilg
.EndFor();
766
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.CheckEndOfArrayMethod, _xmlReaderArg, size, _memberNamesArg, _memberNamespacesArg);
767
_ilg
.EndIf();
771
_ilg
.Else();
772
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.AddNewObjectWithIdMethod, objectId, _objectLocal);
773
_ilg
.EndIf();
787
_objectLocal =
_ilg
.DeclareLocal(type);
788
_ilg
.Load(_contextArg);
789
_ilg
.LoadMember(XmlFormatGeneratorStatics.GetCollectionMemberMethod);
790
_ilg
.ConvertValue(typeof(object), type);
791
_ilg
.Stloc(_objectLocal);
795
_ilg
.If();
796
_ilg
.If(_objectLocal, Cmp.EqualTo, null);
797
_ilg
.Call(null, XmlFormatGeneratorStatics.ThrowNullValueReturnedForGetOnlyCollectionExceptionMethod, type);
799
_ilg
.Else();
800
LocalBuilder size =
_ilg
.DeclareLocal(typeof(int));
803
_ilg
.Load(_objectLocal);
804
_ilg
.Call(XmlFormatGeneratorStatics.GetArrayLengthMethod);
805
_ilg
.Stloc(size);
808
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.AddNewObjectMethod, _objectLocal);
810
LocalBuilder i =
_ilg
.DeclareLocal(typeof(int));
811
object forLoop =
_ilg
.For(i, 0, int.MaxValue);
813
_ilg
.If();
814
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.IncrementItemCountMethod, 1);
818
_ilg
.If(size, Cmp.EqualTo, i);
819
_ilg
.Call(null, XmlFormatGeneratorStatics.ThrowArrayExceededSizeExceptionMethod, size, type);
820
_ilg
.Else();
821
_ilg
.StoreArrayElement(_objectLocal, i, value);
822
_ilg
.EndIf();
826
_ilg
.Else();
828
_ilg
.If();
829
_ilg
.Break(forLoop);
830
_ilg
.Else();
832
_ilg
.EndIf();
833
_ilg
.EndIf();
834
_ilg
.EndFor();
835
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.CheckEndOfArrayMethod, _xmlReaderArg, size, _memberNamesArg, _memberNamespacesArg);
837
_ilg
.EndIf();
838
_ilg
.EndIf();
880
_ilg
.Load(_xmlReaderArg);
881
_ilg
.Load(_contextArg);
882
_ilg
.Load(_memberNamesArg);
883
_ilg
.Load(_memberNamespacesArg);
884
_ilg
.Load(size);
885
_ilg
.Ldloca(_objectLocal);
886
_ilg
.Call(typeof(XmlReaderDelegator).GetMethod(readArrayMethod, Globals.ScanAllMembers)!);
898
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.ResetAttributesMethod);
899
LocalBuilder value =
_ilg
.DeclareLocal(itemType);
900
_ilg
.Load(_collectionContractArg);
901
_ilg
.Call(XmlFormatGeneratorStatics.GetItemContractMethod);
902
_ilg
.Load(_xmlReaderArg);
903
_ilg
.Load(_contextArg);
904
_ilg
.Call(XmlFormatGeneratorStatics.ReadXmlValueMethod);
905
_ilg
.ConvertValue(typeof(object), itemType);
906
_ilg
.Stloc(value);
930
LocalBuilder pairKey =
_ilg
.DeclareLocal(keyMember.MemberType);
931
LocalBuilder pairValue =
_ilg
.DeclareLocal(valueMember.MemberType);
932
_ilg
.LoadAddress(value);
933
_ilg
.LoadMember(keyMember.MemberInfo);
934
_ilg
.Stloc(pairKey);
935
_ilg
.LoadAddress(value);
936
_ilg
.LoadMember(valueMember.MemberInfo);
937
_ilg
.Stloc(pairValue);
939
_ilg
.Call(collection, collectionContract.AddMethod, pairKey, pairValue);
941
_ilg
.Pop();
945
_ilg
.Call(collection, collectionContract.AddMethod, value);
947
_ilg
.Pop();
954
_ilg
.If();
955
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.SkipUnknownElementMethod, _xmlReaderArg);
956
_ilg
.Dec(iterator);
957
_ilg
.Else();
959
_ilg
.EndIf();
964
_ilg
.Call(_xmlReaderArg, XmlFormatGeneratorStatics.IsStartElementMethod2, nameArg, nsArg);
969
_ilg
.Call(_xmlReaderArg, XmlFormatGeneratorStatics.IsStartElementMethod0);
974
_ilg
.Load(_xmlReaderArg);
975
_ilg
.LoadMember(XmlFormatGeneratorStatics.NodeTypeProperty);
976
_ilg
.Load(XmlNodeType.EndElement);
977
_ilg
.Ceq();
982
_ilg
.Call(null, XmlFormatGeneratorStatics.CreateUnexpectedStateExceptionMethod, expectedState, _xmlReaderArg);
983
_ilg
.Throw();
988
_ilg
.Load(msg);
994
_ilg
.New(XmlFormatGeneratorStatics.SerializationExceptionCtor);
995
_ilg
.Throw();