4 writes to _ilg
System.Private.DataContractSerialization (4)
System\Runtime\Serialization\Json\JsonFormatReaderGenerator.cs (4)
66
_ilg
= new CodeGenerator();
129
_ilg
= GenerateCollectionReaderHelper(collectionContract, false /*isGetOnlyCollection*/);
140
_ilg
= GenerateCollectionReaderHelper(collectionContract, true /*isGetOnlyCollection*/);
148
_ilg
= new CodeGenerator();
300 references to _ilg
System.Private.DataContractSerialization (300)
System\Runtime\Serialization\Json\JsonFormatReaderGenerator.cs (300)
70
BeginMethod(
_ilg
, "Read" + DataContract.SanitizeTypeName(classContract.XmlName!.Name) + "FromJson", typeof(JsonFormatClassReaderDelegate), memberAccessFlag);
85
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.AddNewObjectMethod, _objectLocal);
94
_ilg
.Call(_objectLocal, JsonFormatGeneratorStatics.OnDeserializationMethod, null);
100
_ilg
.Load(_objectLocal);
107
_ilg
.ConvertValue(_objectLocal.LocalType, typeof(DateTimeOffsetAdapter));
108
_ilg
.Call(XmlFormatGeneratorStatics.GetDateTimeOffsetMethod);
109
_ilg
.ConvertValue(typeof(DateTimeOffset),
_ilg
.CurrentMethod.ReturnType);
113
_ilg
.ConvertValue(_objectLocal.LocalType, typeof(MemoryStreamAdapter));
114
_ilg
.Call(XmlFormatGeneratorStatics.GetMemoryStreamMethod);
115
_ilg
.ConvertValue(typeof(System.IO.MemoryStream),
_ilg
.CurrentMethod.ReturnType);
119
_ilg
.ConvertValue(_objectLocal.LocalType,
_ilg
.CurrentMethod.ReturnType);
122
return (JsonFormatClassReaderDelegate)
_ilg
.EndMethod();
131
_ilg
.Load(_objectLocal);
132
_ilg
.ConvertValue(_objectLocal.LocalType,
_ilg
.CurrentMethod.ReturnType);
133
return (JsonFormatCollectionReaderDelegate)
_ilg
.EndMethod();
142
return (JsonFormatGetOnlyCollectionReaderDelegate)
_ilg
.EndMethod();
154
BeginMethod(
_ilg
, "Read" + DataContract.SanitizeTypeName(collectionContract.XmlName.Name) + "FromJson" + "IsGetOnly", typeof(JsonFormatGetOnlyCollectionReaderDelegate), memberAccessFlag);
158
BeginMethod(
_ilg
, "Read" + DataContract.SanitizeTypeName(collectionContract.XmlName.Name) + "FromJson", typeof(JsonFormatCollectionReaderDelegate), memberAccessFlag);
173
_collectionContractArg =
_ilg
.GetArg(4);
174
return
_ilg
;
192
_xmlReaderArg =
_ilg
.GetArg(0);
193
_contextArg =
_ilg
.GetArg(1);
194
_emptyDictionaryStringArg =
_ilg
.GetArg(2);
195
_memberNamesArg =
_ilg
.GetArg(3);
204
_objectLocal =
_ilg
.DeclareLocal(type);
208
_ilg
.LoadMember(typeof(DBNull).GetField("Value")!);
209
_ilg
.Stloc(_objectLocal);
215
_ilg
.Ldloca(_objectLocal);
216
_ilg
.InitObj(type);
220
_ilg
.New(classContract.GetNonAttributedTypeConstructor()!);
221
_ilg
.Stloc(_objectLocal);
226
_ilg
.Call(null, JsonFormatGeneratorStatics.GetUninitializedObjectMethod, classContract.TypeForInitialization);
227
_ilg
.ConvertValue(typeof(object), type);
228
_ilg
.Stloc(_objectLocal);
238
_ilg
.LoadAddress(_objectLocal);
239
_ilg
.ConvertAddress(_objectLocal.LocalType, _objectType!);
240
_ilg
.Load(_contextArg);
241
_ilg
.LoadMember(XmlFormatGeneratorStatics.GetStreamingContextMethod);
242
_ilg
.Call(classContract.OnDeserializing);
252
_ilg
.LoadAddress(_objectLocal);
253
_ilg
.ConvertAddress(_objectLocal.LocalType, _objectType!);
254
_ilg
.Load(_contextArg);
255
_ilg
.LoadMember(XmlFormatGeneratorStatics.GetStreamingContextMethod);
256
_ilg
.Call(classContract.OnDeserialized);
271
_ilg
.Load(_contextArg);
272
_ilg
.LoadAddress(_objectLocal);
274
_ilg
.ConvertAddress(_objectLocal.LocalType, typeof(IObjectReference));
276
_ilg
.Load(Globals.NewObjectId);
277
_ilg
.Call(XmlFormatGeneratorStatics.GetRealObjectMethod);
278
_ilg
.ConvertValue(typeof(object),
_ilg
.CurrentMethod.ReturnType);
291
LocalBuilder extensionDataLocal =
_ilg
.DeclareLocal(typeof(ExtensionDataObject));
292
_ilg
.New(JsonFormatGeneratorStatics.ExtensionDataObjectCtor);
293
_ilg
.Store(extensionDataLocal);
301
_ilg
.Call(_objectLocal, extensionDataSetMethod, extensionDataLocal);
316
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.IncrementItemCountMethod, memberCount);
318
BitFlagsGenerator expectedElements = new BitFlagsGenerator(memberCount,
_ilg
);
323
LocalBuilder memberIndexLocal =
_ilg
.DeclareLocal(typeof(int), -1);
324
Label throwDuplicateMemberLabel =
_ilg
.DefineLabel();
325
Label throwMissingRequiredMembersLabel =
_ilg
.DefineLabel();
327
object forReadElements =
_ilg
.For(null, null, null);
328
_ilg
.Call(null, XmlFormatGeneratorStatics.MoveToNextElementMethod, _xmlReaderArg);
329
_ilg
.IfFalseBreak(forReadElements);
330
_ilg
.Call(_contextArg, JsonFormatGeneratorStatics.GetJsonMemberIndexMethod, _xmlReaderArg, _memberNamesArg, memberIndexLocal, extensionDataLocal);
333
Label[] memberLabels =
_ilg
.Switch(memberCount);
335
_ilg
.EndSwitch();
339
_ilg
.Pop();
341
_ilg
.EndFor();
343
Label endOfTypeLabel =
_ilg
.DefineLabel();
344
_ilg
.Br(endOfTypeLabel);
346
_ilg
.MarkLabel(throwDuplicateMemberLabel);
347
_ilg
.Call(null, JsonFormatGeneratorStatics.ThrowDuplicateMemberExceptionMethod, _objectLocal, _memberNamesArg, memberIndexLocal);
349
_ilg
.MarkLabel(throwMissingRequiredMembersLabel);
350
_ilg
.Load(_objectLocal);
351
_ilg
.ConvertValue(_objectLocal.LocalType, typeof(object));
352
_ilg
.Load(_memberNamesArg);
355
_ilg
.Call(JsonFormatGeneratorStatics.ThrowMissingRequiredMembersMethod);
357
_ilg
.MarkLabel(endOfTypeLabel);
372
_ilg
.Case(memberLabels[memberCount]);
373
_ilg
.Set(memberIndexLocal, memberCount);
375
_ilg
.Brfalse(throwDuplicateMemberLabel);
379
_ilg
.LoadAddress(_objectLocal);
380
_ilg
.LoadMember(dataMember.MemberInfo);
381
value =
_ilg
.DeclareLocal(memberType);
382
_ilg
.Stloc(value);
383
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.StoreCollectionMemberInfoMethod, value);
388
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.ResetCollectionMemberInfoMethod);
390
_ilg
.LoadAddress(_objectLocal);
391
_ilg
.ConvertAddress(_objectLocal.LocalType, _objectType!);
392
_ilg
.Ldloc(value);
393
_ilg
.StoreMember(dataMember.MemberInfo);
396
_ilg
.EndCase();
405
_ilg
.Load(expectedElements.GetLocal(i));
406
_ilg
.Load(requiredElements[i]);
407
_ilg
.And();
408
_ilg
.Load(0);
409
_ilg
.Ceq();
410
_ilg
.Brfalse(throwMissingRequiredMembersLabel);
416
LocalBuilder localArray =
_ilg
.DeclareLocal(typeof(byte[]));
417
_ilg
.NewArray(typeof(byte), array.Length);
418
_ilg
.Store(localArray);
421
_ilg
.StoreArrayElement(localArray, i, array[i]);
423
_ilg
.Load(localArray);
461
_ilg
.LoadAddress(_objectLocal);
462
_ilg
.ConvertAddress(_objectLocal.LocalType, _objectType!);
463
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.ReadSerializationInfoMethod, _xmlReaderArg, classContract.UnderlyingType);
464
_ilg
.Load(_contextArg);
465
_ilg
.LoadMember(XmlFormatGeneratorStatics.GetStreamingContextMethod);
466
_ilg
.Call(ctor);
473
LocalBuilder value =
_ilg
.DeclareLocal(type);
485
LocalBuilder objectId =
_ilg
.DeclareLocal(typeof(string));
486
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.ReadAttributesMethod, _xmlReaderArg);
487
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.ReadIfNullOrRefMethod, _xmlReaderArg, type, DataContract.IsTypeSerializable(type));
488
_ilg
.Stloc(objectId);
490
_ilg
.If(objectId, Cmp.EqualTo, Globals.NullObjectId);
493
_ilg
.LoadAddress(value);
494
_ilg
.InitObj(value.LocalType);
500
_ilg
.Load(null);
501
_ilg
.Stloc(value);
507
_ilg
.ElseIfIsEmptyString(objectId);
508
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.GetObjectIdMethod);
509
_ilg
.Stloc(objectId);
512
_ilg
.IfNotIsEmptyString(objectId);
514
_ilg
.EndIf();
519
value =
_ilg
.DeclareLocal(type);
524
_ilg
.Call(_xmlReaderArg, primitiveContract.XmlFormatReaderMethod);
525
_ilg
.Stloc(value);
527
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.AddNewObjectMethod, value);
534
_ilg
.Else();
539
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.GetExistingObjectMethod, objectId, type, name, string.Empty);
540
_ilg
.ConvertValue(typeof(object), type);
541
_ilg
.Stloc(value);
543
_ilg
.EndIf();
547
_ilg
.If(objectId, Cmp.NotEqualTo, Globals.NullObjectId);
549
_ilg
.EndIf();
564
_ilg
.Load(_contextArg);
565
_ilg
.Load(_xmlReaderArg);
567
_ilg
.Load(DataContract.GetId(declaredType.TypeHandle));
568
_ilg
.Ldtoken(declaredType);
569
_ilg
.Load(name);
571
_ilg
.Load(string.Empty);
572
_ilg
.Call(XmlFormatGeneratorStatics.InternalDeserializeMethod);
576
_ilg
.Call(JsonFormatGeneratorStatics.UnboxPointer);
580
_ilg
.ConvertValue(typeof(object), type);
582
_ilg
.Stloc(value);
590
_ilg
.LoadAddress(outerValue);
591
_ilg
.Load(innerValue);
595
_ilg
.New(type.GetConstructor(new Type[] { innerType })!);
598
_ilg
.Call(outerType.GetConstructor(new Type[] { innerType })!);
633
_objectLocal =
_ilg
.DeclareLocal(type);
638
_ilg
.Ldloca(_objectLocal);
639
_ilg
.InitObj(type);
643
_ilg
.New(constructor);
644
_ilg
.Stloc(_objectLocal);
645
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.AddNewObjectMethod, _objectLocal);
653
_ilg
.Load(_contextArg);
654
_ilg
.LoadMember(JsonFormatGeneratorStatics.UseSimpleDictionaryFormatReadProperty);
655
_ilg
.If();
659
_ilg
.Else();
662
LocalBuilder objectId =
_ilg
.DeclareLocal(typeof(string));
663
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.GetObjectIdMethod);
664
_ilg
.Stloc(objectId);
670
_ilg
.IfNot();
676
growingCollection =
_ilg
.DeclareLocal(type);
677
_ilg
.NewArray(itemType, 32);
678
_ilg
.Stloc(growingCollection);
680
LocalBuilder i =
_ilg
.DeclareLocal(typeof(int));
681
object forLoop =
_ilg
.For(i, 0, int.MaxValue);
684
_ilg
.If();
685
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.IncrementItemCountMethod, 1);
691
_ilg
.Call(null, ensureArraySizeMethod, growingCollection, i);
692
_ilg
.Stloc(growingCollection);
693
_ilg
.StoreArrayElement(growingCollection, i, value);
697
_ilg
.Else();
699
_ilg
.If();
700
_ilg
.Break(forLoop);
701
_ilg
.Else();
703
_ilg
.EndIf();
704
_ilg
.EndIf();
706
_ilg
.EndFor();
710
_ilg
.Call(null, trimArraySizeMethod, growingCollection, i);
711
_ilg
.Stloc(_objectLocal);
712
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.AddNewObjectWithIdMethod, objectId, _objectLocal);
717
_ilg
.Else();
718
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.AddNewObjectWithIdMethod, objectId, _objectLocal);
719
_ilg
.EndIf();
724
_ilg
.EndIf();
772
LocalBuilder nodeType =
_ilg
.DeclareLocal(typeof(XmlNodeType));
774
_ilg
.BeginWhileCondition();
775
_ilg
.Call(_xmlReaderArg, JsonFormatGeneratorStatics.MoveToContentMethod);
776
_ilg
.Stloc(nodeType);
777
_ilg
.Load(nodeType);
778
_ilg
.Load(XmlNodeType.EndElement);
779
_ilg
.BeginWhileBody(Cmp.NotEqualTo);
781
_ilg
.Load(nodeType);
782
_ilg
.Load(XmlNodeType.Element);
783
_ilg
.If(Cmp.NotEqualTo);
785
_ilg
.EndIf();
787
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.IncrementItemCountMethod, 1);
791
_ilg
.Load(keyType);
794
_ilg
.Load(_xmlReaderArg);
795
_ilg
.Call(JsonFormatGeneratorStatics.GetJsonMemberNameMethod);
799
_ilg
.Call(JsonFormatGeneratorStatics.ParseEnumMethod);
800
_ilg
.ConvertValue(typeof(object), keyType);
804
_ilg
.Call(keyDataContract.ParseMethod!);
806
LocalBuilder pairKey =
_ilg
.DeclareLocal(keyType);
807
_ilg
.Stloc(pairKey);
810
LocalBuilder pairKeyNullable =
_ilg
.DeclareLocal(keyTypeOriginal);
818
_ilg
.EndWhile();
829
LocalBuilder size =
_ilg
.DeclareLocal(typeof(int));
831
_objectLocal =
_ilg
.DeclareLocal(type);
832
_ilg
.Load(_contextArg);
833
_ilg
.LoadMember(XmlFormatGeneratorStatics.GetCollectionMemberMethod);
834
_ilg
.ConvertValue(typeof(object), type);
835
_ilg
.Stloc(_objectLocal);
841
_ilg
.Load(_contextArg);
842
_ilg
.LoadMember(JsonFormatGeneratorStatics.UseSimpleDictionaryFormatReadProperty);
843
_ilg
.If();
847
_ilg
.If(_objectLocal, Cmp.EqualTo, null);
848
_ilg
.Call(null, XmlFormatGeneratorStatics.ThrowNullValueReturnedForGetOnlyCollectionExceptionMethod, type);
849
_ilg
.EndIf();
854
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.CheckEndOfArrayMethod, _xmlReaderArg, size, _memberNamesArg, _emptyDictionaryStringArg);
856
_ilg
.Else();
861
_ilg
.If();
865
_ilg
.If(_objectLocal, Cmp.EqualTo, null);
866
_ilg
.Call(null, XmlFormatGeneratorStatics.ThrowNullValueReturnedForGetOnlyCollectionExceptionMethod, type);
867
_ilg
.EndIf();
872
_ilg
.Load(_objectLocal);
873
_ilg
.Call(XmlFormatGeneratorStatics.GetArrayLengthMethod);
874
_ilg
.Stloc(size);
877
LocalBuilder i =
_ilg
.DeclareLocal(typeof(int));
878
object forLoop =
_ilg
.For(i, 0, int.MaxValue);
880
_ilg
.If();
881
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.IncrementItemCountMethod, 1);
885
_ilg
.If(size, Cmp.EqualTo, i);
886
_ilg
.Call(null, XmlFormatGeneratorStatics.ThrowArrayExceededSizeExceptionMethod, size, type);
887
_ilg
.Else();
888
_ilg
.StoreArrayElement(_objectLocal, i, value);
889
_ilg
.EndIf();
893
_ilg
.Else();
895
_ilg
.If();
896
_ilg
.Break(forLoop);
897
_ilg
.Else();
899
_ilg
.EndIf();
900
_ilg
.EndIf();
901
_ilg
.EndFor();
902
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.CheckEndOfArrayMethod, _xmlReaderArg, size, _memberNamesArg, _emptyDictionaryStringArg);
904
_ilg
.EndIf();
908
_ilg
.EndIf();
949
_ilg
.Load(_xmlReaderArg);
950
_ilg
.ConvertValue(typeof(XmlReaderDelegator), typeof(JsonReaderDelegator));
951
_ilg
.Load(_contextArg);
952
_ilg
.Load(_memberNamesArg);
954
_ilg
.Load(_emptyDictionaryStringArg);
956
_ilg
.Load(-1);
957
_ilg
.Ldloca(_objectLocal);
958
_ilg
.Call(typeof(JsonReaderDelegator).GetMethod(readArrayMethod, Globals.ScanAllMembers)!);
970
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.ResetAttributesMethod);
971
LocalBuilder value =
_ilg
.DeclareLocal(itemType);
972
_ilg
.Load(_collectionContractArg);
973
_ilg
.Call(JsonFormatGeneratorStatics.GetItemContractMethod);
974
_ilg
.Call(JsonFormatGeneratorStatics.GetRevisedItemContractMethod);
975
_ilg
.Load(_xmlReaderArg);
976
_ilg
.Load(_contextArg);
977
_ilg
.Call(JsonFormatGeneratorStatics.ReadJsonValueMethod);
978
_ilg
.ConvertValue(typeof(object), itemType);
979
_ilg
.Stloc(value);
1001
LocalBuilder pairKey =
_ilg
.DeclareLocal(keyMember.MemberType);
1002
LocalBuilder pairValue =
_ilg
.DeclareLocal(valueMember.MemberType);
1003
_ilg
.LoadAddress(value);
1004
_ilg
.LoadMember(keyMember.MemberInfo);
1005
_ilg
.Stloc(pairKey);
1006
_ilg
.LoadAddress(value);
1007
_ilg
.LoadMember(valueMember.MemberInfo);
1008
_ilg
.Stloc(pairValue);
1016
_ilg
.Call(collection, collectionContract.AddMethod, value);
1018
_ilg
.Pop();
1026
_ilg
.Call(collection, collectionContract.AddMethod, pairKey, pairValue);
1028
_ilg
.Pop();
1034
_ilg
.If();
1035
_ilg
.Call(_contextArg, XmlFormatGeneratorStatics.SkipUnknownElementMethod, _xmlReaderArg);
1036
_ilg
.Dec(iterator);
1037
_ilg
.Else();
1039
_ilg
.EndIf();
1044
_ilg
.Call(_xmlReaderArg, JsonFormatGeneratorStatics.IsStartElementMethod2, nameArg, nsArg);
1049
_ilg
.Call(_xmlReaderArg, JsonFormatGeneratorStatics.IsStartElementMethod0);
1054
_ilg
.Load(_xmlReaderArg);
1055
_ilg
.LoadMember(JsonFormatGeneratorStatics.NodeTypeProperty);
1056
_ilg
.Load(XmlNodeType.EndElement);
1057
_ilg
.Ceq();
1062
_ilg
.Call(null, XmlFormatGeneratorStatics.CreateUnexpectedStateExceptionMethod, expectedState, _xmlReaderArg);
1063
_ilg
.Throw();
1069
_ilg
.CallStringFormat(msg, values);
1071
_ilg
.Load(msg);
1077
_ilg
.New(JsonFormatGeneratorStatics.SerializationExceptionCtor);
1078
_ilg
.Throw();