2 writes to ilg
System.Runtime.Serialization (2)
System\Runtime\Serialization\XmlFormatWriterGenerator.cs (2)
104ilg = new CodeGenerator(); 134ilg = new CodeGenerator();
185 references to ilg
System.Runtime.Serialization (185)
System\Runtime\Serialization\XmlFormatWriterGenerator.cs (185)
108ilg.BeginMethod("Write" + classContract.StableName.Name + "ToXml", Globals.TypeOfXmlFormatClassWriterDelegate, memberAccessFlag); 129return (XmlFormatClassWriterDelegate)ilg.EndMethod(); 138ilg.BeginMethod("Write" + collectionContract.StableName.Name + "ToXml", Globals.TypeOfXmlFormatCollectionWriterDelegate, memberAccessFlag); 158return (XmlFormatCollectionWriterDelegate)ilg.EndMethod(); 163xmlWriterArg = ilg.GetArg(0); 164contextArg = ilg.GetArg(2); 165dataContractArg = ilg.GetArg(3); 167objectLocal = ilg.DeclareLocal(objType, "objSerialized"); 168ArgBuilder objectArg = ilg.GetArg(1); 169ilg.Load(objectArg); 177ilg.ConvertValue(objectArg.ArgType, Globals.TypeOfDateTimeOffset); 178ilg.Call(XmlFormatGeneratorStatics.GetDateTimeOffsetAdapterMethod); 182ilg.ConvertValue(objectArg.ArgType, objType); 184ilg.Stloc(objectLocal); 191ilg.Call(contextArg, XmlFormatGeneratorStatics.DemandMemberAccessPermissionMethod); 199ilg.Call(contextArg, XmlFormatGeneratorStatics.DemandSerializationFormatterPermissionMethod); 215ilg.Load(contextArg); 216ilg.LoadMember(XmlFormatGeneratorStatics.SerializeReadOnlyTypesProperty); 217ilg.IfNot(); 218ilg.Load(dataContractArg); 219ilg.LoadMember(serializationExceptionMessageProperty); 220ilg.Load(null); 221ilg.Call(XmlFormatGeneratorStatics.ThrowInvalidDataContractExceptionMethod); 222ilg.EndIf(); 231ilg.LoadAddress(objectLocal); 232ilg.Load(contextArg); 233ilg.Call(XmlFormatGeneratorStatics.GetStreamingContextMethod); 234ilg.Call(classContract.OnSerializing); 244ilg.LoadAddress(objectLocal); 245ilg.Load(contextArg); 246ilg.Call(XmlFormatGeneratorStatics.GetStreamingContextMethod); 247ilg.Call(classContract.OnSerialized); 256ilg.Call(contextArg, XmlFormatGeneratorStatics.WriteISerializableMethod, xmlWriterArg, objectLocal); 261contractNamespacesLocal = ilg.DeclareLocal(typeof(XmlDictionaryString[]), "contractNamespaces"); 262ilg.Load(dataContractArg); 263ilg.LoadMember(XmlFormatGeneratorStatics.ContractNamespacesField); 264ilg.Store(contractNamespacesLocal); 267memberNamesLocal = ilg.DeclareLocal(typeof(XmlDictionaryString[]), "memberNames"); 268ilg.Load(dataContractArg); 269ilg.LoadMember(XmlFormatGeneratorStatics.MemberNamesField); 270ilg.Store(memberNamesLocal); 276childElementNamespacesLocal = ilg.DeclareLocal(typeof(XmlDictionaryString[]), "childElementNamespaces"); 277ilg.Load(dataContractArg); 278ilg.LoadMember(XmlFormatGeneratorStatics.ChildElementNamespacesProperty); 279ilg.Store(childElementNamespacesLocal); 285LocalBuilder extensionDataLocal = ilg.DeclareLocal(Globals.TypeOfExtensionDataObject, "extensionData"); 286ilg.Load(objectLocal); 287ilg.ConvertValue(objectLocal.LocalType, Globals.TypeOfIExtensibleDataObject); 288ilg.LoadMember(XmlFormatGeneratorStatics.ExtensionDataProperty); 289ilg.Store(extensionDataLocal); 290ilg.Call(contextArg, XmlFormatGeneratorStatics.WriteExtensionDataMethod, xmlWriterArg, extensionDataLocal, -1); 304LocalBuilder namespaceLocal = ilg.DeclareLocal(typeof(XmlDictionaryString), "ns"); 307ilg.Load(dataContractArg); 308ilg.LoadMember(XmlFormatGeneratorStatics.NamespaceProperty); 311ilg.LoadArrayElement(contractNamespacesLocal, typeIndex - 1); 312ilg.Store(namespaceLocal); 314ilg.Call(contextArg, XmlFormatGeneratorStatics.IncrementItemCountMethod, classContract.Members.Count); 323ilg.Load(contextArg); 324ilg.Call(XmlFormatGeneratorStatics.StoreIsGetOnlyCollectionMethod); 329ilg.IfNotDefaultValue(memberValue); 337ilg.Load(xmlWriterArg); 338ilg.LoadArrayElement(childElementNamespacesLocal, i + childElementIndex); 339ilg.Call(XmlFormatGeneratorStatics.WriteNamespaceDeclMethod); 347ilg.Call(contextArg, XmlFormatGeneratorStatics.WriteExtensionDataMethod, xmlWriterArg, extensionDataLocal, memberCount); 352ilg.Else(); 353ilg.Call(null, XmlFormatGeneratorStatics.ThrowRequiredMemberMustBeEmittedMethod, member.Name, classContract.UnderlyingType); 355ilg.EndIf(); 367ilg.LoadAddress(objectLocal); 368ilg.LoadMember(member.MemberInfo); 369LocalBuilder memberValue = ilg.DeclareLocal(member.MemberType, member.Name + "Value"); 370ilg.Stloc(memberValue); 376LocalBuilder itemNamespace = ilg.DeclareLocal(typeof(XmlDictionaryString), "itemNamespace"); 377ilg.Load(dataContractArg); 378ilg.LoadMember(XmlFormatGeneratorStatics.NamespaceProperty); 379ilg.Store(itemNamespace); 381LocalBuilder itemName = ilg.DeclareLocal(typeof(XmlDictionaryString), "itemName"); 382ilg.Load(dataContractArg); 383ilg.LoadMember(XmlFormatGeneratorStatics.CollectionItemNameProperty); 384ilg.Store(itemName); 388ilg.Load(xmlWriterArg); 389ilg.Load(dataContractArg); 390ilg.LoadMember(XmlFormatGeneratorStatics.ChildElementNamespaceProperty); 391ilg.Call(XmlFormatGeneratorStatics.WriteNamespaceDeclMethod); 397LocalBuilder i = ilg.DeclareLocal(Globals.TypeOfInt, "i"); 399ilg.Call(contextArg, XmlFormatGeneratorStatics.IncrementArrayCountMethod, xmlWriterArg, objectLocal); 403ilg.For(i, 0, objectLocal); 407ilg.LoadArrayElement(objectLocal, i); 408LocalBuilder memberValue = ilg.DeclareLocal(itemType, "memberValue"); 409ilg.Stloc(memberValue); 413ilg.EndFor(); 436ilg.Call(contextArg, incrementCollectionCountMethod, xmlWriterArg, objectLocal); 494LocalBuilder currentValue = ilg.DeclareLocal(elementType, "currentValue"); 496LocalBuilder enumerator = ilg.DeclareLocal(enumeratorType, "enumerator"); 497ilg.Call(objectLocal, collectionContract.GetEnumeratorMethod); 500ilg.ConvertValue(collectionContract.GetEnumeratorMethod.ReturnType, Globals.TypeOfIDictionaryEnumerator); 501ilg.New(XmlFormatGeneratorStatics.DictionaryEnumeratorCtor); 507ilg.ConvertValue(collectionContract.GetEnumeratorMethod.ReturnType, ctorParam); 508ilg.New(dictEnumCtor); 510ilg.Stloc(enumerator); 512ilg.ForEach(currentValue, elementType, enumeratorType, enumerator, getCurrentMethod); 515ilg.Call(contextArg, XmlFormatGeneratorStatics.IncrementItemCountMethod, 1); 523ilg.Call(dataContractArg, XmlFormatGeneratorStatics.GetItemContractMethod); 524ilg.Load(xmlWriterArg); 525ilg.Load(currentValue); 526ilg.ConvertValue(currentValue.LocalType, Globals.TypeOfObject); 527ilg.Load(contextArg); 528ilg.Call(XmlFormatGeneratorStatics.WriteXmlValueMethod); 536ilg.EndForEach(moveNextMethod); 549ilg.Load(xmlWriterArg); 553ilg.Load(contextArg); 554ilg.Load(xmlWriterArg); 559ilg.Load(value); 563ilg.LoadAddress(objectLocal); 564ilg.LoadMember(memberInfo); 568ilg.LoadArrayElement(objectLocal, arrayItemIndex); 573ilg.Load(name); 577ilg.LoadArrayElement(memberNamesLocal, nameIndex); 580ilg.Load(ns); 582ilg.Call(primitiveContract.XmlFormatWriterMethod); 621ilg.Load(xmlWriterArg); 622ilg.Load(value); 623ilg.Load(itemName); 624ilg.Load(itemNamespace); 625ilg.Call(typeof(XmlWriterDelegator).GetMethod(writeArrayMethod, Globals.ScanAllMembers, null, new Type[] { type, typeof(XmlDictionaryString), typeof(XmlDictionaryString) }, null)); 636ilg.Load(memberValue); 637ilg.Load(memberType); 638ilg.Call(XmlFormatGeneratorStatics.BoxPointer); 640memberValue = ilg.DeclareLocal(memberType, "memberValueRefPointer"); 641ilg.Store(memberValue); 649ilg.Call(xmlWriterArg, primitiveContract.XmlFormatContentWriterMethod, memberValue); 662ilg.Load(memberValue); 663ilg.Load(null); 664ilg.Ceq(); 666ilg.If(); 667ilg.Call(contextArg, XmlFormatGeneratorStatics.WriteNullMethod, xmlWriterArg, memberType, DataContract.IsTypeSerializable(memberType)); 668ilg.Else(); 674ilg.Call(xmlWriterArg, primitiveContract.XmlFormatContentWriterMethod, memberValue); 678ilg.Call(contextArg, primitiveContract.XmlFormatContentWriterMethod, xmlWriterArg, memberValue); 687ilg.Load(memberValue); 688ilg.ConvertValue(memberValue.LocalType, Globals.TypeOfObject); 689memberValue = ilg.DeclareLocal(Globals.TypeOfObject, "unwrappedMemberValue"); 691ilg.Stloc(memberValue); 692ilg.If(memberValue, Cmp.EqualTo, null); 693ilg.Call(contextArg, XmlFormatGeneratorStatics.WriteNullMethod, xmlWriterArg, memberType, DataContract.IsTypeSerializable(memberType)); 694ilg.Else(); 700ilg.EndIf(); 702ilg.EndIf(); 708ilg.Load(contextArg); 709ilg.Load(xmlWriterArg); 710ilg.Load(memberValue); 711ilg.ConvertValue(memberValue.LocalType, Globals.TypeOfObject); 712LocalBuilder typeHandleValue = ilg.DeclareLocal(typeof(RuntimeTypeHandle), "typeHandleValue"); 713ilg.Call(null, typeof(Type).GetMethod("GetTypeHandle"), memberValue); 714ilg.Stloc(typeHandleValue); 715ilg.LoadAddress(typeHandleValue); 716ilg.Ldtoken(memberType); 717ilg.Call(typeof(RuntimeTypeHandle).GetMethod("Equals", new Type[] { typeof(RuntimeTypeHandle) })); 718ilg.Load(writeXsiType); 719ilg.Load(DataContract.GetId(memberType.TypeHandle)); 720ilg.Ldtoken(memberType); 721ilg.Call(methodInfo); 728Label onNull = ilg.DefineLabel(); 729Label end = ilg.DefineLabel(); 730ilg.Load(memberValue); 734ilg.Dup(); 735ilg.Call(XmlFormatGeneratorStatics.GetHasValueMethod.MakeGenericMethod(innerType)); 736ilg.Brfalse(onNull); 737ilg.Call(XmlFormatGeneratorStatics.GetNullableValueMethod.MakeGenericMethod(innerType)); 740memberValue = ilg.DeclareLocal(memberType, "nullableUnwrappedMemberValue"); 741ilg.Stloc(memberValue); 742ilg.Load(false); //isNull 743ilg.Br(end); 744ilg.MarkLabel(onNull); 745ilg.Pop(); 746ilg.Call(XmlFormatGeneratorStatics.GetDefaultValueMethod.MakeGenericMethod(memberType)); 747ilg.Stloc(memberValue); 748ilg.Load(true); //isNull 749ilg.MarkLabel(end); 761ilg.Load(xmlWriterArg); 764ilg.Load(Globals.ElementPrefix); 768ilg.LoadArrayElement(memberNamesLocal, nameIndex); 770ilg.Load(nameLocal); 773ilg.Load(namespaceLocal); 775ilg.Call(needsPrefix ? XmlFormatGeneratorStatics.WriteStartElementMethod3 : XmlFormatGeneratorStatics.WriteStartElementMethod2); 780ilg.Call(xmlWriterArg, XmlFormatGeneratorStatics.WriteEndElementMethod);