4 writes to ilg
System.Runtime.Serialization (4)
System\Runtime\Serialization\Json\JsonFormatReaderGenerator.cs (4)
121ilg = new CodeGenerator(); 174ilg = GenerateCollectionReaderHelper(collectionContract, false /*isGetOnlyCollection*/); 183ilg = GenerateCollectionReaderHelper(collectionContract, true /*isGetOnlyCollection*/); 190ilg = new CodeGenerator();
299 references to ilg
System.Runtime.Serialization (299)
System\Runtime\Serialization\Json\JsonFormatReaderGenerator.cs (299)
125BeginMethod(ilg, "Read" + classContract.StableName.Name + "FromJson", typeof(JsonFormatClassReaderDelegate), memberAccessFlag); 142ilg.Call(contextArg, XmlFormatGeneratorStatics.AddNewObjectMethod, objectLocal); 149ilg.Call(objectLocal, JsonFormatGeneratorStatics.OnDeserializationMethod, null); 153ilg.Load(objectLocal); 160ilg.ConvertValue(objectLocal.LocalType, Globals.TypeOfDateTimeOffsetAdapter); 161ilg.Call(XmlFormatGeneratorStatics.GetDateTimeOffsetMethod); 162ilg.ConvertValue(Globals.TypeOfDateTimeOffset, ilg.CurrentMethod.ReturnType); 166ilg.ConvertValue(objectLocal.LocalType, ilg.CurrentMethod.ReturnType); 169return (JsonFormatClassReaderDelegate)ilg.EndMethod(); 176ilg.Load(objectLocal); 177ilg.ConvertValue(objectLocal.LocalType, ilg.CurrentMethod.ReturnType); 178return (JsonFormatCollectionReaderDelegate)ilg.EndMethod(); 185return (JsonFormatGetOnlyCollectionReaderDelegate)ilg.EndMethod(); 196BeginMethod(ilg, "Read" + collectionContract.StableName.Name + "FromJson" + "IsGetOnly", typeof(JsonFormatGetOnlyCollectionReaderDelegate), memberAccessFlag); 200BeginMethod(ilg, "Read" + collectionContract.StableName.Name + "FromJson", typeof(JsonFormatCollectionReaderDelegate), memberAccessFlag); 216collectionContractArg = ilg.GetArg(4); 217return ilg; 239xmlReaderArg = ilg.GetArg(0); 240contextArg = ilg.GetArg(1); 241emptyDictionaryStringArg = ilg.GetArg(2); 242memberNamesArg = ilg.GetArg(3); 249ilg.Call(contextArg, XmlFormatGeneratorStatics.DemandMemberAccessPermissionMethod); 257ilg.Call(contextArg, XmlFormatGeneratorStatics.DemandSerializationFormatterPermissionMethod); 268objectLocal = ilg.DeclareLocal(type, "objectDeserialized"); 272ilg.LoadMember(Globals.TypeOfDBNull.GetField("Value")); 273ilg.Stloc(objectLocal); 279ilg.Ldloca(objectLocal); 280ilg.InitObj(type); 284ilg.New(classContract.GetNonAttributedTypeConstructor()); 285ilg.Stloc(objectLocal); 290ilg.Call(null, JsonFormatGeneratorStatics.GetUninitializedObjectMethod, DataContract.GetIdForInitialization(classContract)); 291ilg.ConvertValue(Globals.TypeOfObject, type); 292ilg.Stloc(objectLocal); 302ilg.LoadAddress(objectLocal); 303ilg.ConvertAddress(objectLocal.LocalType, objectType); 304ilg.Load(contextArg); 305ilg.LoadMember(XmlFormatGeneratorStatics.GetStreamingContextMethod); 306ilg.Call(classContract.OnDeserializing); 316ilg.LoadAddress(objectLocal); 317ilg.ConvertAddress(objectLocal.LocalType, objectType); 318ilg.Load(contextArg); 319ilg.LoadMember(XmlFormatGeneratorStatics.GetStreamingContextMethod); 320ilg.Call(classContract.OnDeserialized); 333ilg.Load(contextArg); 334ilg.LoadAddress(objectLocal); 335ilg.ConvertAddress(objectLocal.LocalType, Globals.TypeOfIObjectReference); 336ilg.Load(Globals.NewObjectId); 337ilg.Call(XmlFormatGeneratorStatics.GetRealObjectMethod); 338ilg.ConvertValue(Globals.TypeOfObject, ilg.CurrentMethod.ReturnType); 348LocalBuilder extensionDataLocal = ilg.DeclareLocal(Globals.TypeOfExtensionDataObject, "extensionData"); 349ilg.New(JsonFormatGeneratorStatics.ExtensionDataObjectCtor); 350ilg.Store(extensionDataLocal); 358ilg.Call(objectLocal, extensionDataSetMethod, extensionDataLocal); 369ilg.Call(contextArg, XmlFormatGeneratorStatics.IncrementItemCountMethod, memberCount); 371BitFlagsGenerator expectedElements = new BitFlagsGenerator(memberCount, ilg, classContract.UnderlyingType.Name + "_ExpectedElements"); 376LocalBuilder memberIndexLocal = ilg.DeclareLocal(Globals.TypeOfInt, "memberIndex", -1); 377Label throwDuplicateMemberLabel = ilg.DefineLabel(); 378Label throwMissingRequiredMembersLabel = ilg.DefineLabel(); 380object forReadElements = ilg.For(null, null, null); 381ilg.Call(null, XmlFormatGeneratorStatics.MoveToNextElementMethod, xmlReaderArg); 382ilg.IfFalseBreak(forReadElements); 383ilg.Call(contextArg, JsonFormatGeneratorStatics.GetJsonMemberIndexMethod, xmlReaderArg, memberNamesArg, memberIndexLocal, extensionDataLocal); 386Label[] memberLabels = ilg.Switch(memberCount); 388ilg.EndSwitch(); 392ilg.Pop(); 394ilg.EndFor(); 396Label endOfTypeLabel = ilg.DefineLabel(); 397ilg.Br(endOfTypeLabel); 399ilg.MarkLabel(throwDuplicateMemberLabel); 400ilg.Call(null, JsonFormatGeneratorStatics.ThrowDuplicateMemberExceptionMethod, objectLocal, memberNamesArg, memberIndexLocal); 402ilg.MarkLabel(throwMissingRequiredMembersLabel); 403ilg.Load(objectLocal); 404ilg.ConvertValue(objectLocal.LocalType, Globals.TypeOfObject); 405ilg.Load(memberNamesArg); 408ilg.Call(JsonFormatGeneratorStatics.ThrowMissingRequiredMembersMethod); 410ilg.MarkLabel(endOfTypeLabel); 423ilg.Case(memberLabels[memberCount], dataMember.Name); 424ilg.Set(memberIndexLocal, memberCount); 426ilg.Brfalse(throwDuplicateMemberLabel); 430ilg.LoadAddress(objectLocal); 431ilg.LoadMember(dataMember.MemberInfo); 432value = ilg.DeclareLocal(memberType, dataMember.Name + "Value"); 433ilg.Stloc(value); 434ilg.Call(contextArg, XmlFormatGeneratorStatics.StoreCollectionMemberInfoMethod, value); 440ilg.LoadAddress(objectLocal); 441ilg.ConvertAddress(objectLocal.LocalType, objectType); 442ilg.Ldloc(value); 443ilg.StoreMember(dataMember.MemberInfo); 446ilg.EndCase(); 455ilg.Load(expectedElements.GetLocal(i)); 456ilg.Load(requiredElements[i]); 457ilg.And(); 458ilg.Load(0); 459ilg.Ceq(); 460ilg.Brfalse(throwMissingRequiredMembersLabel); 466LocalBuilder localArray = ilg.DeclareLocal(Globals.TypeOfByteArray, name); 467ilg.NewArray(typeof(byte), array.Length); 468ilg.Store(localArray); 471ilg.StoreArrayElement(localArray, i, array[i]); 473ilg.Load(localArray); 510ilg.LoadAddress(objectLocal); 511ilg.ConvertAddress(objectLocal.LocalType, objectType); 512ilg.Call(contextArg, XmlFormatGeneratorStatics.ReadSerializationInfoMethod, xmlReaderArg, classContract.UnderlyingType); 513ilg.Load(contextArg); 514ilg.LoadMember(XmlFormatGeneratorStatics.GetStreamingContextMethod); 515ilg.Call(ctor); 520LocalBuilder value = ilg.DeclareLocal(type, "valueRead"); 532LocalBuilder objectId = ilg.DeclareLocal(Globals.TypeOfString, "objectIdRead"); 533ilg.Call(contextArg, XmlFormatGeneratorStatics.ReadAttributesMethod, xmlReaderArg); 534ilg.Call(contextArg, XmlFormatGeneratorStatics.ReadIfNullOrRefMethod, xmlReaderArg, type, DataContract.IsTypeSerializable(type)); 535ilg.Stloc(objectId); 537ilg.If(objectId, Cmp.EqualTo, Globals.NullObjectId); 540ilg.LoadAddress(value); 541ilg.InitObj(value.LocalType); 547ilg.Load(null); 548ilg.Stloc(value); 554ilg.ElseIfIsEmptyString(objectId); 555ilg.Call(contextArg, XmlFormatGeneratorStatics.GetObjectIdMethod); 556ilg.Stloc(objectId); 559ilg.IfNotIsEmptyString(objectId); 561ilg.EndIf(); 566value = ilg.DeclareLocal(type, "innerValueRead"); 571ilg.Call(xmlReaderArg, primitiveContract.XmlFormatReaderMethod); 572ilg.Stloc(value); 574ilg.Call(contextArg, XmlFormatGeneratorStatics.AddNewObjectMethod, value); 581ilg.Else(); 586ilg.Call(contextArg, XmlFormatGeneratorStatics.GetExistingObjectMethod, objectId, type, name, string.Empty); 587ilg.ConvertValue(Globals.TypeOfObject, type); 588ilg.Stloc(value); 590ilg.EndIf(); 594ilg.If(objectId, Cmp.NotEqualTo, Globals.NullObjectId); 596ilg.EndIf(); 610ilg.Load(contextArg); 611ilg.Load(xmlReaderArg); 613ilg.Load(DataContract.GetId(declaredType.TypeHandle)); 614ilg.Ldtoken(declaredType); 615ilg.Load(name); 617ilg.Load(string.Empty); 618ilg.Call(XmlFormatGeneratorStatics.InternalDeserializeMethod); 621ilg.Call(JsonFormatGeneratorStatics.UnboxPointer); 623ilg.ConvertValue(Globals.TypeOfObject, type); 624ilg.Stloc(value); 630ilg.LoadAddress(outerValue); 631ilg.Load(innerValue); 635ilg.New(type.GetConstructor(new Type[] { innerType })); 638ilg.Call(outerType.GetConstructor(new Type[] { innerType })); 671objectLocal = ilg.DeclareLocal(type, "objectDeserialized"); 676ilg.Ldloca(objectLocal); 677ilg.InitObj(type); 681ilg.New(constructor); 682ilg.Stloc(objectLocal); 683ilg.Call(contextArg, XmlFormatGeneratorStatics.AddNewObjectMethod, objectLocal); 691ilg.Load(contextArg); 692ilg.LoadMember(JsonFormatGeneratorStatics.UseSimpleDictionaryFormatReadProperty); 693ilg.If(); 697ilg.Else(); 700LocalBuilder objectId = ilg.DeclareLocal(Globals.TypeOfString, "objectIdRead"); 701ilg.Call(contextArg, XmlFormatGeneratorStatics.GetObjectIdMethod); 702ilg.Stloc(objectId); 708ilg.IfNot(); 714growingCollection = ilg.DeclareLocal(type, "growingCollection"); 715ilg.NewArray(itemType, 32); 716ilg.Stloc(growingCollection); 718LocalBuilder i = ilg.DeclareLocal(Globals.TypeOfInt, "i"); 719object forLoop = ilg.For(i, 0, Int32.MaxValue); 722ilg.If(); 723ilg.Call(contextArg, XmlFormatGeneratorStatics.IncrementItemCountMethod, 1); 728ilg.Call(null, ensureArraySizeMethod, growingCollection, i); 729ilg.Stloc(growingCollection); 730ilg.StoreArrayElement(growingCollection, i, value); 734ilg.Else(); 736ilg.If(); 737ilg.Break(forLoop); 738ilg.Else(); 740ilg.EndIf(); 741ilg.EndIf(); 743ilg.EndFor(); 747ilg.Call(null, trimArraySizeMethod, growingCollection, i); 748ilg.Stloc(objectLocal); 749ilg.Call(contextArg, XmlFormatGeneratorStatics.AddNewObjectWithIdMethod, objectId, objectLocal); 754ilg.Else(); 755ilg.Call(contextArg, XmlFormatGeneratorStatics.AddNewObjectWithIdMethod, objectId, objectLocal); 756ilg.EndIf(); 761ilg.EndIf(); 807LocalBuilder nodeType = ilg.DeclareLocal(typeof(XmlNodeType), "nodeType"); 809ilg.BeginWhileCondition(); 810ilg.Call(xmlReaderArg, JsonFormatGeneratorStatics.MoveToContentMethod); 811ilg.Stloc(nodeType); 812ilg.Load(nodeType); 813ilg.Load(XmlNodeType.EndElement); 814ilg.BeginWhileBody(Cmp.NotEqualTo); 816ilg.Load(nodeType); 817ilg.Load(XmlNodeType.Element); 818ilg.If(Cmp.NotEqualTo); 820ilg.EndIf(); 822ilg.Call(contextArg, XmlFormatGeneratorStatics.IncrementItemCountMethod, 1); 826ilg.Load(keyType); 829ilg.Load(xmlReaderArg); 830ilg.Call(JsonFormatGeneratorStatics.GetJsonMemberNameMethod); 834ilg.Call(JsonFormatGeneratorStatics.ParseEnumMethod); 835ilg.ConvertValue(Globals.TypeOfObject, keyType); 839ilg.Call(keyDataContract.ParseMethod); 841LocalBuilder pairKey = ilg.DeclareLocal(keyType, "key"); 842ilg.Stloc(pairKey); 845LocalBuilder pairKeyNullable = ilg.DeclareLocal(keyTypeOriginal, "keyOriginal"); 853ilg.EndWhile(); 862LocalBuilder size = ilg.DeclareLocal(Globals.TypeOfInt, "arraySize"); 864objectLocal = ilg.DeclareLocal(type, "objectDeserialized"); 865ilg.Load(contextArg); 866ilg.LoadMember(XmlFormatGeneratorStatics.GetCollectionMemberMethod); 867ilg.ConvertValue(Globals.TypeOfObject, type); 868ilg.Stloc(objectLocal); 874ilg.Load(contextArg); 875ilg.LoadMember(JsonFormatGeneratorStatics.UseSimpleDictionaryFormatReadProperty); 876ilg.If(); 878ilg.If(objectLocal, Cmp.EqualTo, null); 879ilg.Call(null, XmlFormatGeneratorStatics.ThrowNullValueReturnedForGetOnlyCollectionExceptionMethod, type); 880ilg.Else(); 884ilg.Call(contextArg, XmlFormatGeneratorStatics.CheckEndOfArrayMethod, xmlReaderArg, size, memberNamesArg, emptyDictionaryStringArg); 886ilg.EndIf(); 888ilg.Else(); 893ilg.If(); 894ilg.If(objectLocal, Cmp.EqualTo, null); 895ilg.Call(null, XmlFormatGeneratorStatics.ThrowNullValueReturnedForGetOnlyCollectionExceptionMethod, type); 897ilg.Else(); 901ilg.Load(objectLocal); 902ilg.Call(XmlFormatGeneratorStatics.GetArrayLengthMethod); 903ilg.Stloc(size); 906LocalBuilder i = ilg.DeclareLocal(Globals.TypeOfInt, "i"); 907object forLoop = ilg.For(i, 0, Int32.MaxValue); 909ilg.If(); 910ilg.Call(contextArg, XmlFormatGeneratorStatics.IncrementItemCountMethod, 1); 914ilg.If(size, Cmp.EqualTo, i); 915ilg.Call(null, XmlFormatGeneratorStatics.ThrowArrayExceededSizeExceptionMethod, size, type); 916ilg.Else(); 917ilg.StoreArrayElement(objectLocal, i, value); 918ilg.EndIf(); 922ilg.Else(); 924ilg.If(); 925ilg.Break(forLoop); 926ilg.Else(); 928ilg.EndIf(); 929ilg.EndIf(); 930ilg.EndFor(); 931ilg.Call(contextArg, XmlFormatGeneratorStatics.CheckEndOfArrayMethod, xmlReaderArg, size, memberNamesArg, emptyDictionaryStringArg); 933ilg.EndIf(); 934ilg.EndIf(); 938ilg.EndIf(); 977ilg.Load(xmlReaderArg); 978ilg.ConvertValue(typeof(XmlReaderDelegator), typeof(JsonReaderDelegator)); 979ilg.Load(contextArg); 980ilg.Load(memberNamesArg); 982ilg.Load(emptyDictionaryStringArg); 984ilg.Load(-1); 985ilg.Ldloca(objectLocal); 986ilg.Call(typeof(JsonReaderDelegator).GetMethod(readArrayMethod, Globals.ScanAllMembers)); 996ilg.Call(contextArg, XmlFormatGeneratorStatics.ResetAttributesMethod); 997LocalBuilder value = ilg.DeclareLocal(itemType, "valueRead"); 998ilg.Load(collectionContractArg); 999ilg.Call(JsonFormatGeneratorStatics.GetItemContractMethod); 1000ilg.Call(JsonFormatGeneratorStatics.GetRevisedItemContractMethod); 1001ilg.Load(xmlReaderArg); 1002ilg.Load(contextArg); 1003ilg.Call(JsonFormatGeneratorStatics.ReadJsonValueMethod); 1004ilg.ConvertValue(Globals.TypeOfObject, itemType); 1005ilg.Stloc(value); 1025LocalBuilder pairKey = ilg.DeclareLocal(keyMember.MemberType, keyMember.Name); 1026LocalBuilder pairValue = ilg.DeclareLocal(valueMember.MemberType, valueMember.Name); 1027ilg.LoadAddress(value); 1028ilg.LoadMember(keyMember.MemberInfo); 1029ilg.Stloc(pairKey); 1030ilg.LoadAddress(value); 1031ilg.LoadMember(valueMember.MemberInfo); 1032ilg.Stloc(pairValue); 1038ilg.Call(collection, collectionContract.AddMethod, value); 1040ilg.Pop(); 1046ilg.Call(collection, collectionContract.AddMethod, pairKey, pairValue); 1048ilg.Pop(); 1054ilg.If(); 1055ilg.Call(contextArg, XmlFormatGeneratorStatics.SkipUnknownElementMethod, xmlReaderArg); 1056ilg.Dec(iterator); 1057ilg.Else(); 1059ilg.EndIf(); 1064ilg.Call(xmlReaderArg, JsonFormatGeneratorStatics.IsStartElementMethod2, nameArg, nsArg); 1069ilg.Call(xmlReaderArg, JsonFormatGeneratorStatics.IsStartElementMethod0); 1074ilg.Load(xmlReaderArg); 1075ilg.LoadMember(JsonFormatGeneratorStatics.NodeTypeProperty); 1076ilg.Load(XmlNodeType.EndElement); 1077ilg.Ceq(); 1082ilg.Call(null, XmlFormatGeneratorStatics.CreateUnexpectedStateExceptionMethod, expectedState, xmlReaderArg); 1083ilg.Throw(); 1089ilg.CallStringFormat(msg, values); 1091ilg.Load(msg); 1097ilg.New(JsonFormatGeneratorStatics.SerializationExceptionCtor); 1098ilg.Throw();