23 writes to ilg
System.Private.Xml (23)
System\Xml\Serialization\XmlSerializationILGen.cs (10)
152
ilg
= new CodeGenerator(serializerContractTypeBuilder);
232
ilg
= new CodeGenerator(serializerContractTypeBuilder);
283
ilg
= new CodeGenerator(baseSerializerTypeBuilder);
325
ilg
= new CodeGenerator(typedSerializerTypeBuilder);
360
ilg
= new CodeGenerator(typedSerializerTypeBuilder);
384
ilg
= new CodeGenerator(typedSerializerTypeBuilder);
436
ilg
= new CodeGenerator(serializerContractTypeBuilder);
489
ilg
= new CodeGenerator(serializerContractTypeBuilder);
509
ilg
= new CodeGenerator(serializerContractTypeBuilder);
540
ilg
= new CodeGenerator(serializerContractTypeBuilder);
System\Xml\Serialization\XmlSerializationReaderILGen.cs (8)
228
ilg
= new CodeGenerator(this.typeBuilder);
343
ilg
= new CodeGenerator(this.typeBuilder);
389
ilg
= new CodeGenerator(this.typeBuilder);
632
ilg
= new CodeGenerator(this.typeBuilder);
961
ilg
= new CodeGenerator(this.typeBuilder);
1033
ilg
= new CodeGenerator(this.typeBuilder);
1278
ilg
= new CodeGenerator(this.typeBuilder);
1329
ilg
= new CodeGenerator(this.typeBuilder);
System\Xml\Serialization\XmlSerializationWriterILGen.cs (5)
88
ilg
= new CodeGenerator(this.typeBuilder);
356
ilg
= new CodeGenerator(this.typeBuilder);
547
ilg
= new CodeGenerator(this.typeBuilder);
604
ilg
= new CodeGenerator(this.typeBuilder);
914
ilg
= new CodeGenerator(this.typeBuilder);
1636 references to ilg
System.Private.Xml (1636)
System\Xml\Serialization\XmlSerializationILGen.cs (123)
160
ilg
.BeginMethod(
166
propertyBuilder.SetGetMethod(
ilg
.MethodBuilder!);
168
ilg
.Ldarg(0);
169
ilg
.LoadMember(fieldBuilder);
170
ilg
.Load(null);
172
ilg
.If(Cmp.EqualTo);
178
LocalBuilder _tmpLoc =
ilg
.DeclareLocal(typeof(Hashtable), "_tmp");
179
ilg
.New(Hashtable_ctor);
180
ilg
.Stloc(_tmpLoc);
187
ilg
!.Ldarg(0);
188
ilg
.LoadMember(fieldBuilder);
189
ilg
.Load(null);
190
ilg
.If(Cmp.EqualTo);
192
ilg
.Ldarg(0);
193
ilg
.Ldloc(typeof(Hashtable), "_tmp");
194
ilg
.StoreMember(fieldBuilder);
196
ilg
.EndIf();
198
ilg
.EndIf();
200
ilg
.Ldarg(0);
201
ilg
.LoadMember(fieldBuilder);
202
ilg
.GotoMethodEnd();
204
ilg
.EndMethod();
220
ilg
!.Ldloc(typeof(Hashtable), "_tmp");
221
ilg
.Ldstr(GetCSharpString(xmlMappings[i].Key));
222
ilg
.Ldstr(GetCSharpString(methods[i]));
223
ilg
.Call(Hashtable_set_Item);
233
ilg
.BeginMethod(
253
ilg
.Ldarg("type");
254
ilg
.Ldc(type);
255
ilg
.If(Cmp.EqualTo);
257
ilg
.Ldc(true);
258
ilg
.GotoMethodEnd();
260
ilg
.EndIf();
262
ilg
.Ldc(false);
263
ilg
.GotoMethodEnd();
264
ilg
.EndMethod();
284
ilg
.BeginMethod(typeof(XmlSerializationReader),
289
ilg
.New(readerCtor);
290
ilg
.EndMethod();
296
ilg
.BeginMethod(typeof(XmlSerializationWriter),
301
ilg
.New(writerCtor);
302
ilg
.EndMethod();
326
ilg
.BeginMethod(
336
ilg
.Ldc(true);
337
ilg
.Stloc(
ilg
.ReturnLocal);
338
ilg
.Br(
ilg
.ReturnLabel);
347
ilg
.Ldarg(
ilg
.GetArg("xmlReader"));
348
ilg
.Ldstr(GetCSharpString(mapping.Accessor.Name));
349
ilg
.Ldstr(GetCSharpString(mapping.Accessor.Namespace));
350
ilg
.Call(XmlReader_IsStartElement);
351
ilg
.Stloc(
ilg
.ReturnLocal);
352
ilg
.Br(
ilg
.ReturnLabel);
354
ilg
.MarkLabel(
ilg
.ReturnLabel);
355
ilg
.Ldloc(
ilg
.ReturnLocal);
356
ilg
.EndMethod();
361
ilg
.BeginMethod(
372
ilg
.Ldarg("writer");
373
ilg
.Castclass(CreatedTypes[writerClass]);
374
ilg
.Ldarg("objectToSerialize");
377
ilg
.ConvertValue(typeof(object), typeof(object[]));
379
ilg
.Call(writerType_writeMethod);
380
ilg
.EndMethod();
385
ilg
.BeginMethod(
396
ilg
.Ldarg("reader");
397
ilg
.Castclass(CreatedTypes[readerClass]);
398
ilg
.Call(readerType_readMethod);
399
ilg
.EndMethod();
424
ilg
!.Ldloc(typeof(Hashtable), "_tmp");
425
ilg
.Ldstr(GetCSharpString(key));
426
ilg
.New(ctor);
427
ilg
.Call(Hashtable_Add);
437
ilg
.BeginMethod(
456
ilg
.Ldarg("type");
457
ilg
.Ldc(type);
458
ilg
.If(Cmp.EqualTo);
464
ilg
.New(ctor);
465
ilg
.Stloc(
ilg
.ReturnLocal);
466
ilg
.Br(
ilg
.ReturnLabel);
468
ilg
.EndIf();
471
ilg
.Load(null);
472
ilg
.Stloc(
ilg
.ReturnLocal);
473
ilg
.Br(
ilg
.ReturnLabel);
474
ilg
.MarkLabel(
ilg
.ReturnLabel);
475
ilg
.Ldloc(
ilg
.ReturnLocal);
476
ilg
.EndMethod();
495
ilg
.BeginMethod(
501
propertyBuilder.SetGetMethod(
ilg
.MethodBuilder!);
506
ilg
.New(ctor);
507
ilg
.EndMethod();
515
ilg
.BeginMethod(
521
propertyBuilder.SetGetMethod(
ilg
.MethodBuilder!);
526
ilg
.New(ctor);
527
ilg
.EndMethod();
541
ilg
.BeginMethod(
548
ilg
.Ldarg(0);
549
ilg
.Load(null);
550
ilg
.StoreMember(readMethodsField);
551
ilg
.Ldarg(0);
552
ilg
.Load(null);
553
ilg
.StoreMember(writeMethodsField);
554
ilg
.Ldarg(0);
555
ilg
.Load(null);
556
ilg
.StoreMember(typedSerializersField);
557
ilg
.Ldarg(0);
558
ilg
.Call(baseCtor);
559
ilg
.EndMethod();
583
ilg
!.LoadMember(
ilg
.GetVariable("o"), memInfo);
587
ilg
.ConvertValue(memType, type);
592
SourceInfo info = new SourceInfo(source, null, null, null,
ilg
!);
System\Xml\Serialization\XmlSerializationReaderILGen.cs (925)
229
ilg
.BeginMethod(typeof(void), "InitIDs", Type.EmptyTypes, Array.Empty<string>(),
248
ilg
.Ldarg(0);
249
ilg
.Ldarg(0);
250
ilg
.Call(XmlSerializationReader_get_Reader);
251
ilg
.Call(XmlReader_get_NameTable);
252
ilg
.Ldstr(GetCSharpString(id));
253
ilg
.Call(XmlNameTable_Add);
255
ilg
.StoreMember(_idNameFields[id]);
257
ilg
.EndMethod();
293
ilg
.Ldarg(0);
294
ilg
.Call(XmlSerializationReader_get_Reader);
295
ilg
.Ldarg(0);
296
ilg
.LoadMember(_idNameFields[name ?? string.Empty]);
297
ilg
.Ldarg(0);
298
ilg
.LoadMember(_idNameFields[ns ?? string.Empty]);
299
ilg
.Call(XmlReader_IsStartElement);
300
ilg
.If();
307
ilg
.Else();
310
ilg
.Ldarg(0);
313
ilg
.Load(null);
316
object pVar =
ilg
.GetVariable("p");
317
ilg
.Load(pVar);
318
ilg
.ConvertValue(CodeGenerator.GetVariableType(pVar), typeof(object));
326
ilg
.Ldstr(ReflectionAwareILGen.GetCSharpString(expectedElement));
334
ilg
.Call(method);
337
ilg
.EndIf();
344
ilg
.BeginMethod(typeof(void), "InitCallbacks", Type.EmptyTypes, Array.Empty<string>(),
346
ilg
.EndMethod();
390
ilg
.BeginMethod(
397
ilg
.Load(null);
398
ilg
.Stloc(
ilg
.ReturnLocal);
409
ilg
.Ldarg(0);
410
ilg
.Call(XmlSerializationReader_get_Reader);
411
ilg
.Call(XmlReader_MoveToContent);
412
ilg
.Pop();
414
LocalBuilder localP =
ilg
.DeclareLocal(typeof(object[]), "p");
415
ilg
.NewArray(typeof(object), mappings.Length);
416
ilg
.Stloc(localP);
506
ilg
.Ldarg(0);
507
ilg
.Ldc(true);
508
ilg
.Call(XmlSerializationReader_set_IsReturnValue);
524
ilg
.Ldarg(0);
525
ilg
.Call(XmlSerializationReader_get_Reader);
526
ilg
.Call(XmlReader_MoveToElement);
527
ilg
.Pop();
539
ilg
.Ldarg(0);
540
ilg
.Call(XmlSerializationReader_get_Reader);
541
ilg
.Call(XmlReader_get_IsEmptyElement);
542
ilg
.If();
549
ilg
.Ldarg(0);
550
ilg
.Call(XmlSerializationReader_get_Reader);
551
ilg
.Call(XmlReader_Skip);
552
ilg
.Ldarg(0);
553
ilg
.Call(XmlSerializationReader_get_Reader);
554
ilg
.Call(XmlReader_MoveToContent);
555
ilg
.Pop();
556
ilg
.WhileContinue();
558
ilg
.EndIf();
564
ilg
.Ldarg(0);
565
ilg
.Call(XmlSerializationReader_get_Reader);
566
ilg
.Call(XmlReader_ReadStartElement);
570
ilg
.Ldc(0);
571
ilg
.Stloc(typeof(int), "state");
578
ilg
.Ldarg(0);
579
ilg
.Call(XmlSerializationReader_get_Reader);
580
ilg
.Call(XmlReader_MoveToContent);
581
ilg
.Pop();
593
ilg
.Ldarg(0);
594
ilg
.Call(XmlSerializationReader_ReadEndElement);
599
ilg
.Ldarg(0);
600
ilg
.Call(XmlSerializationReader_get_Reader);
601
ilg
.Call(XmlReader_MoveToContent);
602
ilg
.Pop();
606
ilg
.Ldloc(
ilg
.GetLocal("p"));
607
ilg
.EndMethod();
618
LocalBuilder arrayLoc =
ilg
.GetLocal(arrayName);
619
ilg
.Ldloc(arrayLoc);
620
ilg
.Ldc(i);
621
ReflectionAwareILGen.ILGenForCreateInstance(
ilg
, mappings[i].TypeDesc!.Type!, false, false);
622
ilg
.ConvertValue(mappings[i].TypeDesc!.Type!, typeof(object));
623
ilg
.Stelem(arrayLoc.LocalType.GetElementType()!);
633
ilg
.BeginMethod(
640
LocalBuilder oLoc =
ilg
.DeclareLocal(typeof(object), "o");
641
ilg
.Load(null);
642
ilg
.Stloc(oLoc);
658
ilg
.Ldarg(0);
659
ilg
.Call(XmlSerializationReader_get_Reader);
660
ilg
.Call(XmlReader_MoveToContent);
661
ilg
.Pop();
664
ilg
.Ldloc(oLoc);
666
ilg
.Stloc(
ilg
.ReturnLocal);
667
ilg
.Ldloc(
ilg
.ReturnLocal);
668
ilg
.EndMethod();
694
ilg
.Ldarg(0);
707
ilg
.Ldarg(0);
708
ilg
.Call(XmlSerializationReader_get_Reader);
709
ilg
.Call(XmlReader_ReadXXXString);
723
ilg
.Ldarg(0);
724
ilg
.Call(XmlSerializationReader_get_Reader);
725
ilg
.Call(XmlReader_get_Value);
729
LocalBuilder locVals =
ilg
.GetLocal("vals");
730
LocalBuilder locI =
ilg
.GetLocal("i");
731
ilg
.LoadArrayElement(locVals, locI);
735
ilg
.Ldc(false);
741
ilg
.Call(methodBuilder);
757
ilg
.Ldarg(0);
758
ilg
.Call(XmlSerializationReader_get_Reader);
759
ilg
.Call(XmlReader_ReadXXXString);
773
ilg
.Ldarg(0);
774
ilg
.Call(XmlSerializationReader_get_Reader);
775
ilg
.Call(XmlReader_get_Value);
779
LocalBuilder locVals =
ilg
.GetLocal("vals");
780
LocalBuilder locI =
ilg
.GetLocal("i");
781
ilg
.LoadArrayElement(locVals, locI);
794
ilg
.Ldarg(0);
795
LocalBuilder locVals =
ilg
.GetLocal("vals");
796
LocalBuilder locI =
ilg
.GetLocal("i");
797
ilg
.LoadArrayElement(locVals, locI);
807
ilg
.Call(XmlSerializationReader_CollapseWhitespace);
823
ilg
.Ldarg(0);
824
ilg
.Ldarg(0);
825
ilg
.Call(XmlSerializationReader_get_Reader);
826
ilg
.Call(XmlReader_method);
834
ilg
.Call(XmlSerializationReader_CollapseWhitespace);
851
ilg
.Ldarg(0);
880
ilg
.Ldarg(0);
881
ilg
.Call(XmlSerializationReader_get_Reader);
882
ilg
.Call(XmlReader_ReadXXXString);
896
ilg
.Ldarg(0);
897
ilg
.Call(XmlSerializationReader_get_Reader);
898
ilg
.Call(XmlReader_get_Value);
902
LocalBuilder locVals =
ilg
.GetLocal("vals");
903
LocalBuilder locI =
ilg
.GetLocal("i");
904
ilg
.LoadArrayElement(locVals, locI);
909
ilg
.Ldc(false);
911
ilg
.Call(ToXXX);
962
ilg
.BeginMethod(
969
ilg
.Ldarg(0);
970
ilg
.LoadMember(fieldBuilder);
971
ilg
.Load(null);
972
ilg
.If(Cmp.EqualTo);
978
LocalBuilder hLoc =
ilg
.DeclareLocal(typeof(Hashtable), "h");
979
ilg
.New(Hashtable_ctor);
980
ilg
.Stloc(hLoc);
991
ilg
.Ldloc(hLoc);
992
ilg
.Ldstr(GetCSharpString(constants[i].XmlName));
993
ilg
.Ldc(Enum.ToObject(mapping.TypeDesc!.Type!, constants[i].Value));
994
ilg
.ConvertValue(mapping.TypeDesc.Type!, typeof(long));
995
ilg
.ConvertValue(typeof(long), typeof(object));
997
ilg
.Call(Hashtable_Add);
1000
ilg
.Ldarg(0);
1001
ilg
.Ldloc(hLoc);
1002
ilg
.StoreMember(fieldBuilder);
1004
ilg
.EndIf();
1006
ilg
.Ldarg(0);
1007
ilg
.LoadMember(fieldBuilder);
1009
get_TableName =
ilg
.EndMethod();
1034
ilg
.BeginMethod(
1050
ilg
.Ldarg("s");
1051
ilg
.Ldarg(0);
1053
ilg
.Call(get_TableName);
1054
ilg
.Ldstr(GetCSharpString(fullTypeName));
1055
ilg
.Call(XmlSerializationReader_ToEnum);
1059
ilg
.ConvertValue(typeof(long), underlyingType);
1061
ilg
.Stloc(
ilg
.ReturnLocal);
1062
ilg
.Br(
ilg
.ReturnLabel);
1069
Label defaultLabel =
ilg
.DefineLabel();
1070
Label endSwitchLabel =
ilg
.DefineLabel();
1072
LocalBuilder localTmp =
ilg
.GetTempLocal(typeof(string));
1073
ilg
.Ldarg("s");
1074
ilg
.Stloc(localTmp);
1075
ilg
.Ldloc(localTmp);
1076
ilg
.Brfalse(defaultLabel);
1085
Label caseLabel =
ilg
.DefineLabel();
1086
ilg
.Ldloc(localTmp);
1087
ilg
.Ldstr(GetCSharpString(c.XmlName));
1093
ilg
.Call(String_op_Equality);
1094
ilg
.Brtrue(caseLabel);
1100
ilg
.Br(defaultLabel);
1104
ilg
.MarkLabel(caseLabels[i]);
1105
ilg
.Ldc(retValues[i]);
1106
ilg
.Stloc(
ilg
.ReturnLocal);
1107
ilg
.Br(
ilg
.ReturnLabel);
1115
ilg
.MarkLabel(defaultLabel);
1116
ilg
.Ldarg(0);
1117
ilg
.Ldarg("s");
1119
ilg
.Ldc(mapping.TypeDesc.Type!);
1120
ilg
.Call(XmlSerializationReader_CreateUnknownConstantException);
1121
ilg
.Throw();
1123
ilg
.MarkLabel(endSwitchLabel);
1126
ilg
.MarkLabel(
ilg
.ReturnLabel);
1127
ilg
.Ldloc(
ilg
.ReturnLocal);
1128
ilg
.EndMethod();
1135
ilg
.InitElseIf();
1137
ilg
.AndIf();
1146
ilg
.Ldarg(0);
1149
ilg
.Ldarg("isNullable");
1152
ilg
.Ldc(false);
1161
ilg
.Call(methodBuilder);
1162
ilg
.ConvertValue(methodBuilder.ReturnType,
ilg
.ReturnLocal.LocalType);
1163
ilg
.Stloc(
ilg
.ReturnLocal);
1164
ilg
.Br(
ilg
.ReturnLabel);
1178
ilg
.InitElseIf();
1180
ilg
.AndIf();
1191
ilg
.Ldarg(0);
1192
ilg
.Call(XmlSerializationReader_get_Reader);
1193
ilg
.Call(XmlReader_ReadStartElement);
1199
LocalBuilder eLoc =
ilg
.DeclareOrGetLocal(typeof(object), "e");
1216
ilg
.Ldarg(0);
1217
ilg
.Ldarg(0);
1218
ilg
.Ldarg(0);
1219
ilg
.Call(XmlSerializationReader_get_Reader);
1220
ilg
.Call(XmlReader_ReadString);
1221
ilg
.Call(XmlSerializationReader_CollapseWhitespace);
1222
ilg
.Call(methodBuilder);
1223
ilg
.ConvertValue(methodBuilder.ReturnType, eLoc.LocalType);
1224
ilg
.Stloc(eLoc);
1230
ilg
.Ldarg(0);
1231
ilg
.Call(XmlSerializationReader_ReadEndElement);
1232
ilg
.Ldloc(eLoc);
1233
ilg
.Stloc(
ilg
.ReturnLocal);
1234
ilg
.Br(
ilg
.ReturnLabel);
1241
ilg
.InitElseIf();
1243
ilg
.AndIf();
1244
ilg
.EnterScope();
1253
LocalBuilder aLoc =
ilg
.DeclareLocal(arrayMapping.TypeDesc.Type!, aVar);
1256
ReflectionAwareILGen.ILGenForCreateInstance(
ilg
, td.Type!, false, false);
1259
ilg
.Load(null);
1260
ilg
.Stloc(aLoc);
1263
ilg
.Ldloc(aLoc);
1264
ilg
.Stloc(
ilg
.ReturnLocal);
1265
ilg
.Br(
ilg
.ReturnLabel);
1266
ilg
.ExitScope();
1279
ilg
.BeginMethod(
1286
LocalBuilder oLoc =
ilg
.DeclareLocal(nullableMapping.TypeDesc.Type!, "o");
1288
ilg
.LoadAddress(oLoc);
1289
ilg
.InitObj(nullableMapping.TypeDesc.Type!);
1294
ilg
.Ldarg(0);
1295
ilg
.Call(XmlSerializationReader_ReadNull);
1296
ilg
.If();
1298
ilg
.Ldloc(oLoc);
1299
ilg
.Stloc(
ilg
.ReturnLocal);
1300
ilg
.Br(
ilg
.ReturnLabel);
1302
ilg
.EndIf();
1310
ilg
.Ldloc(oLoc);
1311
ilg
.Stloc(
ilg
.ReturnLocal);
1312
ilg
.Br(
ilg
.ReturnLabel);
1314
ilg
.MarkLabel(
ilg
.ReturnLabel);
1315
ilg
.Ldloc(
ilg
.ReturnLocal);
1316
ilg
.EndMethod();
1339
ilg
.BeginMethod(
1346
LocalBuilder locXsiType =
ilg
.DeclareLocal(typeof(XmlQualifiedName), "xsiType");
1347
LocalBuilder locIsNull =
ilg
.DeclareLocal(typeof(bool), "isNull");
1358
Label labelTrue =
ilg
.DefineLabel();
1359
Label labelEnd =
ilg
.DefineLabel();
1360
ilg
.Ldarg("checkType");
1361
ilg
.Brtrue(labelTrue);
1362
ilg
.Load(null);
1363
ilg
.Br_S(labelEnd);
1364
ilg
.MarkLabel(labelTrue);
1365
ilg
.Ldarg(0);
1366
ilg
.Call(XmlSerializationReader_GetXsiType);
1367
ilg
.MarkLabel(labelEnd);
1368
ilg
.Stloc(locXsiType);
1369
ilg
.Ldc(false);
1370
ilg
.Stloc(locIsNull);
1373
ilg
.Ldarg("isNullable");
1374
ilg
.If();
1376
ilg
.Ldarg(0);
1377
ilg
.Call(XmlSerializationReader_ReadNull);
1378
ilg
.Stloc(locIsNull);
1380
ilg
.EndIf();
1383
ilg
.Ldarg("checkType");
1384
ilg
.If(); // if (checkType)
1387
ilg
.Ldloc(locIsNull);
1388
ilg
.If();
1389
ilg
.Ldloc(locXsiType);
1390
ilg
.Load(null);
1391
ilg
.If(Cmp.NotEqualTo);
1397
ilg
.Ldarg(0);
1398
ilg
.Ldloc(locXsiType);
1399
ilg
.Call(XmlSerializationReader_ReadTypedNull);
1400
ilg
.Stloc(
ilg
.ReturnLocal);
1401
ilg
.Br(
ilg
.ReturnLabel);
1402
ilg
.Else();
1409
ilg
.Load(null);
1410
ilg
.Stloc(
ilg
.ReturnLocal);
1411
ilg
.Br(
ilg
.ReturnLabel);
1413
ilg
.EndIf(); // if (xsiType != null)
1415
ilg
.EndIf(); // if (isNull)
1417
ilg
.Ldloc(typeof(XmlQualifiedName), "xsiType");
1418
ilg
.Load(null);
1419
ilg
.Ceq();
1422
labelTrue =
ilg
.DefineLabel();
1423
labelEnd =
ilg
.DefineLabel();
1425
ilg
.Brtrue(labelTrue);
1428
ilg
.Br_S(labelEnd);
1429
ilg
.MarkLabel(labelTrue);
1430
ilg
.Ldc(true);
1431
ilg
.MarkLabel(labelEnd);
1433
ilg
.If(); // if (xsiType == null
1445
ilg
.Ldarg(0);
1446
ilg
.Ldstr(Soap.UrType);
1447
ilg
.Ldstr(XmlSchema.Namespace);
1448
ilg
.New(XmlQualifiedName_ctor);
1449
ilg
.Call(XmlSerializationReader_ReadTypedPrimitive);
1450
ilg
.Stloc(
ilg
.ReturnLocal);
1451
ilg
.Br(
ilg
.ReturnLabel);
1455
ilg
.Else(); // if (xsiType == null
1463
ilg
.Ldarg(0);
1464
ilg
.Ldloc(locXsiType);
1465
ilg
.Call(XmlSerializationReader_ReadTypedPrimitive);
1466
ilg
.Stloc(
ilg
.ReturnLocal);
1467
ilg
.Br(
ilg
.ReturnLabel);
1476
ilg
.Ldarg(0);
1477
ilg
.Ldloc(locXsiType);
1478
ilg
.Call(XmlSerializationReader_CreateUnknownTypeException);
1479
ilg
.Throw();
1481
ilg
.EndIf(); // if (xsiType == null
1482
ilg
.EndIf(); // checkType
1486
ilg
.Ldloc(typeof(bool), "isNull");
1487
ilg
.If();
1489
ilg
.Load(null);
1490
ilg
.Stloc(
ilg
.ReturnLocal);
1491
ilg
.Br(
ilg
.ReturnLabel);
1493
ilg
.EndIf();
1503
ilg
.Ldarg(0);
1504
ilg
.Ldstr(GetCSharpString(structMapping.TypeName));
1505
ilg
.Ldstr(GetCSharpString(structMapping.Namespace));
1506
ilg
.Call(XmlSerializationReader_CreateAbstractTypeException);
1507
ilg
.Throw();
1518
ilg
.Ldarg(0);
1519
ilg
.Ldc(false);
1520
ilg
.Call(XmlSerializationReader_set_DecodeName);
1523
LocalBuilder oLoc =
ilg
.GetLocal("o");
1622
ilg
.Ldarg(0);
1623
ilg
.Call(XmlSerializationReader_get_Reader);
1624
ilg
.Call(XmlReader_MoveToElement);
1625
ilg
.Pop();
1632
ilg
.Ldarg(0);
1633
ilg
.Call(XmlSerializationReader_get_Reader);
1634
ilg
.Call(XmlReader_get_IsEmptyElement);
1635
ilg
.If();
1641
ilg
.Ldarg(0);
1642
ilg
.Call(XmlSerializationReader_get_Reader);
1643
ilg
.Call(XmlReader_Skip);
1645
ilg
.Ldloc(oLoc);
1646
ilg
.Stloc(
ilg
.ReturnLocal);
1647
ilg
.Br(
ilg
.ReturnLabel);
1648
ilg
.EndIf();
1655
ilg
.Ldarg(0);
1656
ilg
.Call(XmlSerializationReader_get_Reader);
1657
ilg
.Call(XmlReader_ReadStartElement);
1660
ilg
.Ldc(0);
1661
ilg
.Stloc(typeof(int), "state");
1671
ilg
.Ldarg(0);
1672
ilg
.Call(XmlSerializationReader_get_Reader);
1673
ilg
.Call(XmlReader_MoveToContent);
1674
ilg
.Pop();
1684
ilg
.Ldarg(0);
1685
ilg
.Call(XmlSerializationReader_ReadEndElement);
1686
ilg
.Ldloc(structMapping.TypeDesc.Type!, "o");
1687
ilg
.Stloc(
ilg
.ReturnLocal);
1689
ilg
.MarkLabel(
ilg
.ReturnLabel);
1690
ilg
.Ldloc(
ilg
.ReturnLocal);
1691
ilg
.EndMethod();
1710
Label labelEnd =
ilg
.DefineLabel();
1711
Label labelFalse =
ilg
.DefineLabel();
1712
LocalBuilder sLoc =
ilg
.GetLocal(source);
1713
ilg
.Ldloc(sLoc);
1714
ilg
.Call(XmlQualifiedName_get_Name);
1715
ilg
.Ldarg(0);
1716
ilg
.LoadMember(_idNameFields[name ?? string.Empty]);
1717
ilg
.Bne(labelFalse);
1718
ilg
.Ldloc(sLoc);
1719
ilg
.Call(XmlQualifiedName_get_Namespace);
1720
ilg
.Ldarg(0);
1721
ilg
.LoadMember(_idNameFields[ns ?? string.Empty]);
1722
ilg
.Ceq();
1723
ilg
.Br_S(labelEnd);
1724
ilg
.MarkLabel(labelFalse);
1725
ilg
.Ldc(false);
1726
ilg
.MarkLabel(labelEnd);
1759
Label labelFalse =
ilg
.DefineLabel();
1760
Label labelEnd =
ilg
.DefineLabel();
1764
ilg
.Ldarg(0);
1765
ilg
.Call(XmlSerializationReader_get_Reader);
1766
ilg
.Call(XmlReader_get_LocalName);
1767
ilg
.Ldarg(0);
1768
ilg
.LoadMember(_idNameFields[name ?? string.Empty]);
1769
ilg
.Bne(labelFalse);
1772
ilg
.Ldarg(0);
1773
ilg
.Call(XmlSerializationReader_get_Reader);
1774
ilg
.Call(XmlReader_get_NamespaceURI);
1775
ilg
.Ldarg(0);
1776
ilg
.LoadMember(_idNameFields[ns ?? string.Empty]);
1777
ilg
.Ceq();
1781
ilg
.Br_S(labelEnd);
1782
ilg
.MarkLabel(labelFalse);
1783
ilg
.Ldc(false);
1784
ilg
.MarkLabel(labelEnd);
1787
ilg
.AndIf();
1818
ilg
.WhileBegin();
1839
ilg
.InitElseIf();
1841
ilg
.InitIf();
1846
ilg
.Ldc(false);
1847
ilg
.AndIf(Cmp.EqualTo);
1861
ilg
.InitElseIf();
1863
ilg
.InitIf();
1887
ilg
.Ldarg(0);
1888
ilg
.Ldarg(0);
1889
ilg
.Call(XmlSerializationReader_get_Reader);
1890
ilg
.Call(XmlReader_get_Name);
1891
ilg
.Call(XmlSerializationReader_IsXmlnsAttribute);
1892
ilg
.Ldc(true);
1893
ilg
.AndIf(Cmp.EqualTo);
1896
ilg
.Load(null);
1897
ilg
.If(Cmp.EqualTo);
1903
ilg
.New(ctor);
1905
ilg
.EndIf(); // if (xmlnsMember.Source == null
1907
Label labelEqual5 =
ilg
.DefineLabel();
1908
Label labelEndLength =
ilg
.DefineLabel();
1920
ilg
.Ldarg(0);
1921
ilg
.Call(XmlSerializationReader_get_Reader);
1922
ilg
.Call(XmlReader_get_Name);
1923
ilg
.Call(String_get_Length);
1924
ilg
.Ldc(5);
1925
ilg
.Beq(labelEqual5);
1926
ilg
.Ldarg(0);
1927
ilg
.Call(XmlSerializationReader_get_Reader);
1928
ilg
.Call(XmlReader_get_LocalName);
1929
ilg
.Br(labelEndLength);
1930
ilg
.MarkLabel(labelEqual5);
1931
ilg
.Ldstr(string.Empty);
1932
ilg
.MarkLabel(labelEndLength);
1933
ilg
.Ldarg(0);
1934
ilg
.Call(XmlSerializationReader_get_Reader);
1935
ilg
.Call(XmlReader_get_Value);
1936
ilg
.Call(Add);
1938
ilg
.Else();
1952
ilg
.Ldarg(0);
1953
ilg
.Ldarg(0);
1954
ilg
.Call(XmlSerializationReader_get_Reader);
1955
ilg
.Call(XmlReader_get_Name);
1956
ilg
.Call(XmlSerializationReader_IsXmlnsAttribute);
1957
ilg
.Ldc(false);
1958
ilg
.AndIf(Cmp.EqualTo);
1962
LocalBuilder localAttr =
ilg
.DeclareOrGetLocal(typeof(XmlAttribute), "attr");
1973
ilg
.Ldarg(0);
1974
ilg
.Call(XmlSerializationReader_get_Document);
1975
ilg
.Ldarg(0);
1976
ilg
.Call(XmlSerializationReader_get_Reader);
1977
ilg
.Call(XmlDocument_ReadNode);
1978
ilg
.ConvertValue(XmlDocument_ReadNode.ReturnType, localAttr.LocalType);
1979
ilg
.Stloc(localAttr);
1985
ilg
.Ldarg(0);
1986
ilg
.Ldloc(localAttr);
1987
ilg
.Call(XmlSerializationReader_ParseWsdlArrayType);
1993
ilg
.Ldarg(0);
1995
ilg
.Ldloc(firstParam);
1996
ilg
.ConvertValue(firstParam.LocalType, typeof(object));
2009
ilg
.Ldstr(qnames);
2017
ilg
.Call(elseCallMethod);
2019
ilg
.EndIf();
2021
ilg
.WhileBeginCondition();
2023
ilg
.Ldarg(0);
2024
ilg
.Call(XmlSerializationReader_get_Reader);
2025
ilg
.Call(XmlReader_MoveToNextAttribute);
2027
ilg
.WhileEndCondition();
2028
ilg
.WhileEnd();
2040
ilg
.Ldloc("attr");
2045
LocalBuilder attrLoc =
ilg
.GetLocal("attr");
2046
ilg
.Ldloc(attrLoc);
2050
ilg
.Load(null);
2051
ilg
.Cne();
2054
ilg
.IsInst(typeof(XmlAttribute));
2055
ilg
.If();
2057
ilg
.Ldloc(attrLoc);
2058
ilg
.ConvertValue(attrLoc.LocalType, typeof(XmlAttribute));
2060
ilg
.EndIf();
2069
LocalBuilder locListValues =
ilg
.DeclareOrGetLocal(typeof(string), "listValues");
2070
LocalBuilder locVals =
ilg
.DeclareOrGetLocal(typeof(string[]), "vals");
2086
ilg
.Ldarg(0);
2087
ilg
.Call(XmlSerializationReader_get_Reader);
2088
ilg
.Call(XmlReader_get_Value);
2089
ilg
.Stloc(locListValues);
2090
ilg
.Ldloc(locListValues);
2091
ilg
.Load(null);
2092
ilg
.Call(String_Split);
2093
ilg
.Stloc(locVals);
2094
LocalBuilder localI =
ilg
.DeclareOrGetLocal(typeof(int), "i");
2095
ilg
.For(localI, 0, locVals);
2102
ilg
.EndFor();
2138
ilg
.Ldc(0);
2139
ilg
.Stloc(typeof(int), c);
2146
ilg
.Ldc(0);
2147
ilg
.Stloc(typeof(int), $"c{member.ChoiceArrayName}");
2156
ilg
.Ldloc(
ilg
.GetLocal(a));
2165
ilg
.Load(null);
2166
ilg
.If(Cmp.EqualTo);
2174
ilg
.Ldarg(0);
2175
ilg
.Ldstr(GetCSharpString(member.Mapping.TypeDesc.CSharpName));
2176
ilg
.Call(XmlSerializationReader_CreateReadOnlyCollectionException);
2177
ilg
.Throw();
2182
ReflectionAwareILGen.ILGenForCreateInstance(
ilg
, member.Mapping.TypeDesc.Type!, typeDesc.CannotNew, true);
2185
ilg
.EndIf(); // if ((object)(member.Source) == null
2187
WriteLocalDecl(a, new SourceInfo(member.Source, member.Source, member.Mapping.MemberInfo, member.Mapping.TypeDesc.Type,
ilg
));
2231
ilg
.Load(null);
2232
ilg
.Stloc(typeof(string), "tmp");
2246
ilg
.Ldarg(0);
2247
ilg
.Call(XmlSerializationReader_get_Reader);
2248
ilg
.Call(XmlReader_get_NodeType);
2249
ilg
.Ldc(XmlNodeType_Element);
2250
ilg
.If(Cmp.EqualTo);
2257
ilg
.Else();
2259
ilg
.EndIf();
2264
ilg
.InitElseIf();
2265
Label labelTrue =
ilg
.DefineLabel();
2266
Label labelEnd =
ilg
.DefineLabel();
2277
ilg
.Ldarg(0);
2278
ilg
.Call(XmlSerializationReader_get_Reader);
2279
ilg
.Call(XmlReader_get_NodeType);
2280
ilg
.Ldc(XmlNodeType.Text);
2281
ilg
.Ceq();
2282
ilg
.Brtrue(labelTrue);
2283
ilg
.Ldarg(0);
2284
ilg
.Call(XmlSerializationReader_get_Reader);
2285
ilg
.Call(XmlReader_get_NodeType);
2286
ilg
.Ldc(XmlNodeType.CDATA);
2287
ilg
.Ceq();
2288
ilg
.Brtrue(labelTrue);
2289
ilg
.Ldarg(0);
2290
ilg
.Call(XmlSerializationReader_get_Reader);
2291
ilg
.Call(XmlReader_get_NodeType);
2292
ilg
.Ldc(XmlNodeType.Whitespace);
2293
ilg
.Ceq();
2294
ilg
.Brtrue(labelTrue);
2295
ilg
.Ldarg(0);
2296
ilg
.Call(XmlSerializationReader_get_Reader);
2297
ilg
.Call(XmlReader_get_NodeType);
2298
ilg
.Ldc(XmlNodeType.SignificantWhitespace);
2299
ilg
.Ceq();
2300
ilg
.Br(labelEnd);
2301
ilg
.MarkLabel(labelTrue);
2302
ilg
.Ldc(true);
2303
ilg
.MarkLabel(labelEnd);
2304
ilg
.AndIf();
2343
ilg
.Ldarg(0);
2344
ilg
.Call(XmlSerializationReader_get_Document);
2345
ilg
.Ldarg(0);
2346
ilg
.Call(XmlSerializationReader_get_Reader);
2347
ilg
.Call(XmlReader_ReadString);
2348
ilg
.Call(XmlDocument_CreateTextNode);
2362
ilg
.Ldarg(0); // for calling CollapseWhitespace
2377
ilg
.Ldarg(0);
2378
ilg
.Call(XmlSerializationReader_get_Reader);
2379
ilg
.Call(XmlReader_ReadString);
2387
ilg
.Call(XmlSerializationReader_CollapseWhitespace);
2394
LocalBuilder tmpLoc =
ilg
.GetLocal("tmp");
2400
ilg
.Ldarg(0);
2401
ilg
.Ldloc(tmpLoc);
2402
ilg
.Ldc(text.Mapping.TypeDesc!.CollapseWhitespace);
2403
ilg
.Call(XmlSerializationReader_ReadString);
2404
ilg
.Stloc(tmpLoc);
2407
ilg
.Ldloc(tmpLoc);
2478
ilg
.InitElseIf();
2483
ilg
.InitElseIf();
2485
ilg
.InitIf();
2486
ilg
.Ldloc("state");
2487
ilg
.Ldc(cases);
2488
ilg
.AndIf(Cmp.EqualTo);
2489
ilg
.InitIf();
2493
ilg
.InitIf();
2500
ilg
.Ldc(false);
2501
ilg
.AndIf(Cmp.EqualTo);
2503
Label labelTrue =
ilg
.DefineLabel();
2504
Label labelEnd =
ilg
.DefineLabel();
2512
ilg
.Ldarg(0);
2513
ilg
.Call(XmlSerializationReader_get_IsReturnValue);
2514
ilg
.Brtrue(labelTrue);
2518
ilg
.Ldc(true);
2526
ilg
.Br_S(labelEnd);
2527
ilg
.MarkLabel(labelTrue);
2528
ilg
.Ldc(true);
2529
ilg
.MarkLabel(labelEnd);
2531
ilg
.AndIf();
2541
ilg
.Ldarg(0);
2542
ilg
.Ldc(false);
2543
ilg
.Call(XmlSerializationReader_set_IsReturnValue);
2554
ilg
.Else();
2558
ilg
.EndIf();
2561
ilg
.Ldc(cases);
2562
ilg
.Stloc(
ilg
.GetLocal("state"));
2565
ilg
.EndIf();
2571
ilg
.Else();
2576
ilg
.EndIf();
2641
ilg
.Ldarg(0);
2642
ilg
.Ldloc(
ilg
.GetLocal(a));
2643
ilg
.Ldloc(
ilg
.GetLocal(c));
2644
ilg
.Ldc(typeDesc.ArrayElementTypeDesc!.Type!);
2645
ilg
.Ldc(member.IsNullable);
2646
ilg
.Call(XmlSerializationReader_ShrinkArray);
2647
ilg
.ConvertValue(XmlSerializationReader_ShrinkArray.ReturnType, typeDesc.Type!);
2656
ilg
.Ldarg(0);
2657
ilg
.Ldloc(
ilg
.GetLocal(a));
2658
ilg
.Ldloc(
ilg
.GetLocal(c));
2659
ilg
.Ldc(member.Mapping.ChoiceIdentifier.Mapping!.TypeDesc!.Type!);
2660
ilg
.Ldc(member.IsNullable);
2661
ilg
.Call(XmlSerializationReader_ShrinkArray);
2662
ilg
.ConvertValue(XmlSerializationReader_ShrinkArray.ReturnType, member.Mapping.ChoiceIdentifier.Mapping.TypeDesc.Type!.MakeArrayType());
2668
LocalBuilder arrayLoc =
ilg
.GetLocal(member.ArrayName);
2670
ilg
.Ldloc(arrayLoc);
2691
if (
ilg
.TryGetVariable(source, out variable))
2697
ilg
.LoadAddress(variable);
2704
ilg
.LdlocAddress(
ilg
.GetLocal("o"));
2715
LocalBuilder localA =
ilg
.GetLocal(match.Groups["locA1"].Value);
2716
LocalBuilder localI =
ilg
.GetLocal(match.Groups["locI1"].Value);
2723
ilg
.Ldarg(0);
2724
ilg
.Ldloc(localA);
2725
ilg
.Ldloc(localI);
2726
ilg
.Ldc(arrayElementType);
2727
ilg
.Call(XmlSerializationReader_EnsureArrayIndex);
2728
ilg
.Castclass(localA.LocalType);
2729
ilg
.Stloc(localA);
2732
ilg
.Ldloc(localA);
2733
ilg
.Ldloc(localI);
2734
ilg
.Dup();
2735
ilg
.Ldc(1);
2736
ilg
.Add();
2737
ilg
.Stloc(localI);
2740
ilg
.Ldelema(arrayElementType);
2748
LocalBuilder localA =
ilg
.GetLocal(source.Substring(0, index));
2749
ilg
.LdlocAddress(localA);
2757
System.Diagnostics.Debug.Assert(CodeGenerator.GetVariableType(
ilg
.GetVariable(match.Groups["a"].Value)).IsArray);
2758
ilg
.Load(
ilg
.GetVariable(match.Groups["a"].Value));
2759
ilg
.Load(
ilg
.GetVariable(match.Groups["ia"].Value));
2772
if (
ilg
.TryGetVariable(source, out variable))
2777
ilg
.Call(varType.GetConstructor(varType.GetGenericArguments())!);
2782
ilg
.ConvertValue(stackType, elementType);
2783
ilg
.ConvertValue(elementType, varType);
2784
ilg
.Stloc((LocalBuilder)variable);
2793
ilg
.ConvertValue(stackType, memInfo is FieldInfo ? ((FieldInfo)memInfo).FieldType : ((PropertyInfo)memInfo).PropertyType);
2794
ilg
.StoreMember(memInfo);
2801
object oVar =
ilg
.GetVariable(match.Groups["locA1"].Value);
2803
ilg
.ConvertValue(elementType, arrayElementType);
2806
ilg
.Stobj(arrayElementType);
2810
ilg
.Stelem(arrayElementType);
2818
LocalBuilder localA =
ilg
.GetLocal(source.Substring(0, index));
2827
ilg
.ConvertValue(stackType, addParameterType);
2828
ilg
.Call(Add);
2830
ilg
.Pop();
2837
Type varType = CodeGenerator.GetVariableType(
ilg
.GetVariable(match.Groups["a"].Value));
2840
ilg
.ConvertValue(stackType, varElementType);
2841
ilg
.Stelem(varElementType);
2854
ilg
.Ldarg(0);
2855
ilg
.Call(XmlSerializationReader_ReadNull);
2856
ilg
.IfNot(); // if (!ReadNull()) { // EnterScope
2857
ilg
.EnterScope();
2873
Label labelTrue =
ilg
.DefineLabel();
2874
Label labelEnd =
ilg
.DefineLabel();
2878
ilg
.Load(
ilg
.GetVariable(member.ArrayName));
2879
ilg
.Load(null);
2880
ilg
.Beq(labelTrue);
2895
ilg
.Ldarg(0);
2896
ilg
.Call(XmlSerializationReader_get_Reader);
2897
ilg
.Call(XmlReader_get_IsEmptyElement);
2900
ilg
.Br_S(labelEnd);
2901
ilg
.MarkLabel(labelTrue);
2902
ilg
.Ldc(true);
2903
ilg
.MarkLabel(labelEnd);
2905
ilg
.If();
2911
ilg
.Ldarg(0);
2912
ilg
.Call(XmlSerializationReader_get_Reader);
2913
ilg
.Call(XmlReader_Skip);
2914
ilg
.Else();
2921
ilg
.Ldarg(0);
2922
ilg
.Call(XmlSerializationReader_get_Reader);
2923
ilg
.Call(XmlReader_ReadStartElement);
2933
ilg
.Ldarg(0);
2934
ilg
.Call(XmlSerializationReader_get_Reader);
2935
ilg
.Call(XmlReader_MoveToContent);
2936
ilg
.Pop();
2944
ilg
.Ldarg(0);
2945
ilg
.Call(XmlSerializationReader_ReadEndElement);
2946
ilg
.EndIf();
2952
ilg
.ExitScope(); // if(!ReadNull()) { ExitScope
2953
ilg
.Else(); // } else { EnterScope
2954
ilg
.EnterScope();
2959
ilg
.ExitScope(); // if(!ReadNull())/else ExitScope
2960
ilg
.EndIf();
2982
ilg
.Ldarg(0);
2983
ilg
.Ldc(true);
2991
ilg
.Call(methodBuilder);
3004
ilg
.Ldarg(0);
3005
ilg
.Call(XmlSerializationReader_ReadNull);
3006
ilg
.If();
3014
ilg
.Load(null);
3017
ilg
.Else();
3032
ilg
.Ldarg(0);
3033
ilg
.Call(XmlSerializationReader_get_Reader);
3034
ilg
.Call(XmlReader_get_IsEmptyElement);
3035
ilg
.If();
3041
ilg
.Ldarg(0);
3042
ilg
.Call(XmlSerializationReader_get_Reader);
3043
ilg
.Call(XmlReader_Skip);
3044
ilg
.Else();
3063
ilg
.Ldarg(0);
3064
ilg
.Call(XmlSerializationReader_get_Reader);
3065
ilg
.Call(XmlReader_get_IsEmptyElement);
3066
ilg
.If();
3073
ilg
.Ldarg(0);
3074
ilg
.Call(XmlSerializationReader_get_Reader);
3075
ilg
.Call(XmlReader_Skip);
3076
LocalBuilder tmpLoc =
ilg
.GetTempLocal(element.Mapping.TypeDesc!.Type);
3077
ilg
.Ldloca(tmpLoc);
3078
ilg
.InitObj(element.Mapping.TypeDesc!.Type);
3079
ilg
.Ldloc(tmpLoc);
3081
ilg
.Else();
3085
ilg
.EndIf();
3097
ilg
.Ldarg(0);
3098
ilg
.Call(XmlSerializationReader_ReadElementQualifiedName);
3120
ilg
.EndIf();
3143
ilg
.Ldloc(arrayName!);
3144
ilg
.Load(null);
3145
ilg
.If(Cmp.EqualTo);
3146
ilg
.Ldarg(0);
3147
ilg
.Call(XmlSerializationReader_get_Reader);
3148
ilg
.Call(XmlReader_Skip);
3149
ilg
.Else();
3153
ilg
.Ldarg(0);
3156
ilg
.Load(element.IsNullable);
3159
ilg
.Ldc(true);
3167
ilg
.Call(methodBuilder);
3171
ilg
.EndIf();
3185
ilg
.Ldarg(0);
3186
ilg
.Ldc(element.Any ? false : true);
3187
ilg
.Call(XmlSerializationReader_ReadXmlXXX);
3190
ilg
.Castclass(special.TypeDesc.Type!);
3203
Label labelTrue =
ilg
.DefineLabel();
3204
Label labelEnd =
ilg
.DefineLabel();
3205
LocalBuilder tserLoc =
ilg
.DeclareOrGetLocal(typeof(XmlQualifiedName), "tser");
3206
ilg
.Ldarg(0);
3207
ilg
.Call(XmlSerializationReader_GetXsiType);
3208
ilg
.Stloc(tserLoc);
3209
ilg
.Ldloc(tserLoc);
3210
ilg
.Load(null);
3211
ilg
.Ceq();
3212
ilg
.Brtrue(labelTrue);
3215
ilg
.Br_S(labelEnd);
3216
ilg
.MarkLabel(labelTrue);
3217
ilg
.Ldc(true);
3218
ilg
.MarkLabel(labelEnd);
3219
ilg
.If();
3228
ilg
.Ldarg(0);
3229
ReflectionAwareILGen.ILGenForCreateInstance(
ilg
, sm.TypeDesc!.Type!, sm.TypeDesc.CannotNew, false);
3231
ilg
.ConvertValue(typeof(object), typeof(IXmlSerializable));
3233
ilg
.Ldc(true);
3234
ilg
.Call(XmlSerializationReader_ReadSerializable);
3237
ilg
.ConvertValue(typeof(IXmlSerializable), sm.TypeDesc.Type!);
3262
ReflectionAwareILGen.ILGenForEnumMember(
ilg
, choice.Mapping!.TypeDesc!.Type!, choice.MemberIds[elementIndex]);
3273
Label labelTrue =
ilg
.DefineLabel();
3274
Label labelEnd =
ilg
.DefineLabel();
3275
LocalBuilder tserLoc =
ilg
.GetLocal("tser");
3276
ilg
.InitElseIf();
3277
ilg
.Ldloc(tserLoc);
3278
ilg
.Load(null);
3279
ilg
.Ceq();
3280
ilg
.Brtrue(labelTrue);
3283
ilg
.Br_S(labelEnd);
3284
ilg
.MarkLabel(labelTrue);
3285
ilg
.Ldc(true);
3286
ilg
.MarkLabel(labelEnd);
3287
ilg
.AndIf();
3299
ilg
.Ldarg(0);
3300
ReflectionAwareILGen.ILGenForCreateInstance(
ilg
, derived.TypeDesc!.Type!, derived.TypeDesc.CannotNew, false);
3302
ilg
.ConvertValue(typeof(object), typeof(IXmlSerializable));
3304
ilg
.Ldc(true);
3305
ilg
.Call(XmlSerializationReader_ReadSerializable);
3308
ilg
.ConvertValue(typeof(IXmlSerializable), head.TypeDesc.Type!);
3318
ilg
.Ldarg(0);
3319
ilg
.Ldstr(GetCSharpString(derived.XsiType.Name));
3320
ilg
.Ldstr(GetCSharpString(derived.XsiType.Namespace));
3321
ilg
.Ldstr(GetCSharpString(head.XsiType!.Name));
3322
ilg
.Ldstr(GetCSharpString(head.XsiType.Namespace));
3323
ilg
.Ldstr(GetCSharpString(derived.Type.FullName));
3324
ilg
.Ldstr(GetCSharpString(head.Type.FullName));
3325
ilg
.Call(XmlSerializationReader_CreateBadDerivationException);
3326
ilg
.Throw();
3336
ilg
.Ldarg(0);
3337
ilg
.Ldstr(GetCSharpString(derived.XsiType.Name));
3338
ilg
.Ldstr(GetCSharpString(derived.XsiType.Namespace));
3339
ilg
.Ldstr(GetCSharpString(head.Type!.FullName));
3340
ilg
.Call(XmlSerializationReader_CreateMissingIXmlSerializableType);
3341
ilg
.Throw();
3361
ilg
.Ldarg(0);
3362
ilg
.Call(XmlSerializationReader_get_Reader);
3363
ilg
.Call(XmlReader_MoveToContent);
3364
ilg
.Pop();
3365
ilg
.WhileBegin();
3370
ilg
.WhileBeginCondition();
3386
Label labelFalse =
ilg
.DefineLabel();
3387
Label labelEnd =
ilg
.DefineLabel();
3388
ilg
.Ldarg(0);
3389
ilg
.Call(XmlSerializationReader_get_Reader);
3390
ilg
.Call(XmlReader_get_NodeType);
3391
ilg
.Ldc(XmlNodeType_EndElement);
3392
ilg
.Beq(labelFalse);
3393
ilg
.Ldarg(0);
3394
ilg
.Call(XmlSerializationReader_get_Reader);
3395
ilg
.Call(XmlReader_get_NodeType);
3396
ilg
.Ldc(XmlNodeType_None);
3397
ilg
.Cne();
3398
ilg
.Br_S(labelEnd);
3399
ilg
.MarkLabel(labelFalse);
3400
ilg
.Ldc(false);
3401
ilg
.MarkLabel(labelEnd);
3403
ilg
.WhileEndCondition();
3404
ilg
.WhileEnd();
3415
LocalBuilder paramsRead =
ilg
.DeclareLocal(typeof(Span<bool>), "paramsRead");
3418
ilg
.StackallocSpan(typeof(bool), length);
3422
ilg
.NewArray(typeof(bool), length);
3423
ilg
.New(typeof(Span<bool>).GetConstructor(new[] { typeof(bool[]) })!);
3425
ilg
.Stloc(paramsRead);
3433
LocalBuilder loc =
ilg
.DeclareLocal(
3439
ilg
.BeginExceptionBlock();
3441
ReflectionAwareILGen.ILGenForCreateInstance(
ilg
, mapping.TypeDesc.Type!, mapping.TypeDesc.CannotNew, true);
3442
ilg
.Stloc(loc);
3445
ilg
.Leave();
3452
ilg
.Ldarg(0);
3453
ilg
.Ldstr(GetCSharpString(fullTypeName));
3454
ilg
.Call(XmlSerializationReader_CreateInaccessibleConstructorException);
3455
ilg
.Throw();
3463
ilg
.Ldarg(0);
3464
ilg
.Ldstr(GetCSharpString(fullTypeName));
3465
ilg
.Call(XmlSerializationReader_CreateCtorHasSecurityException);
3466
ilg
.Throw();
3468
ilg
.EndExceptionBlock();
3474
ilg
.BeginCatchBlock(exceptionType);
3475
ilg
.Pop();
3480
ReflectionAwareILGen.WriteArrayLocalDecl(typeName, variableName, new SourceInfo(initValue, initValue, null, arrayTypeDesc.Type,
ilg
), arrayTypeDesc);
3485
ReflectionAwareILGen.WriteCreateInstance(source, ctorInaccessible, type,
ilg
);
3524
ilg
.Ldarg(0);
3525
ilg
.Load(null);
3526
ilg
.Ldstr(match.Groups["qnames"].Value);
3527
ilg
.Call(XmlSerializationReader_UnknownNode2);
3534
ilg
.Ldarg(0);
3535
LocalBuilder localO =
ilg
.GetLocal(match.Groups["o"].Value);
3536
ilg
.Ldloc(localO);
3537
ilg
.ConvertValue(localO.LocalType, typeof(object));
3538
ilg
.Ldstr(match.Groups["qnames"].Value);
3539
ilg
.Call(XmlSerializationReader_UnknownNode2);
3546
ilg
.Ldarg(0);
3547
LocalBuilder localO =
ilg
.GetLocal(match.Groups["o"].Value);
3548
ilg
.Ldloc(localO);
3549
ilg
.ConvertValue(localO.LocalType, typeof(object));
3550
ilg
.Load(null);
3551
ilg
.Call(XmlSerializationReader_UnknownNode2);
3558
ilg
.Ldarg(0);
3559
LocalBuilder localO =
ilg
.GetLocal(match.Groups["o"].Value);
3560
ilg
.Ldloc(localO);
3561
ilg
.ConvertValue(localO.LocalType, typeof(object));
3562
ilg
.Call(XmlSerializationReader_UnknownNode1);
3572
ilg
.Ldloca(
ilg
.GetLocal("paramsRead"));
3573
ilg
.Ldc(int.Parse(match.Groups["index"].Value, CultureInfo.InvariantCulture));
3574
ilg
.Call(typeof(Span<bool>).GetMethod("get_Item")!);
3575
ilg
.LdindU1();
3585
ilg
.Ldloca(
ilg
.GetLocal("paramsRead"));
3586
ilg
.Ldc(int.Parse(match.Groups["index"].Value, CultureInfo.InvariantCulture));
3587
ilg
.Call(typeof(Span<bool>).GetMethod("get_Item")!);
3588
ilg
.Ldc(value);
3589
ilg
.StindI1();
3603
ilg
.Ldarg(0);
3604
ilg
.Call(XmlSerializationReader_CreateUnknownNodeException);
3605
ilg
.Throw();
3619
ilg
.Load(value);
System\Xml\Serialization\XmlSerializationWriterILGen.cs (588)
89
ilg
.BeginMethod(typeof(void), "InitCallbacks", Type.EmptyTypes, Array.Empty<string>(),
91
ilg
.EndMethod();
102
ilg
.Ldarg(0);
103
ilg
.Ldstr(GetCSharpString(name));
107
ilg
.Ldstr(GetCSharpString(ns));
118
ilg
.Call(XmlSerializationWriter_WriteXXX);
137
ilg
.Ldarg(0);
139
ilg
.Call(methodBuilder);
167
ilg
.Call(XmlConvert_ToString);
177
ilg
.Ldarg(0);
185
ilg
.Call(FromXXX);
222
ilg
.Ldc(Enum.Parse(mapping.TypeDesc.Type!, enumDefaultValue!, false));
223
ilg
.If(Cmp.NotEqualTo); // " != "
231
ilg
.Ldarg(0);
233
ilg
.Ldstr(GetCSharpString(name));
237
ilg
.Ldstr(GetCSharpString(ns));
259
ilg
.Ldstr(GetCSharpString(mapping.TypeName));
260
ilg
.Ldstr(GetCSharpString(mapping.Namespace));
261
ilg
.New(XmlQualifiedName_ctor);
269
ilg
.Call(XmlSerializationWriter_method);
273
ilg
.EndIf();
284
ilg
.Ldarg(0);
285
ilg
.Ldstr(GetCSharpString(name));
286
ilg
.Ldstr(GetCSharpString(ns));
287
ilg
.Call(XmlSerializationWriter_Method);
297
ilg
.Ldarg(0);
298
ilg
.Ldstr(GetCSharpString(name));
299
ilg
.Ldstr(GetCSharpString(ns));
300
ilg
.Load(null);
301
ilg
.Ldc(writePrefixed);
302
ilg
.Call(XmlSerializationWriter_Method);
317
ilg
.Ldarg(0);
318
ilg
.Call(XmlSerializationWriter_WriteEndElement);
327
object oVar =
ilg
.GetVariable(source);
328
ilg
.Ldarg(0);
329
ilg
.Load(oVar);
330
ilg
.ConvertValue(CodeGenerator.GetVariableType(oVar), typeof(object));
331
ilg
.Call(XmlSerializationWriter_WriteEndElement);
357
ilg
.BeginMethod(
370
ilg
.Ldarg(0);
371
ilg
.Call(XmlSerializationWriter_WriteStartDocument);
378
ilg
.Ldarg(0);
379
ilg
.Call(XmlSerializationWriter_TopLevelElement);
384
LocalBuilder pLengthLoc =
ilg
.DeclareLocal(typeof(int), "pLength");
385
ilg
.Ldarg("p");
386
ilg
.Ldlen();
387
ilg
.Stloc(pLengthLoc);
398
ilg
.Ldloc(pLengthLoc);
399
ilg
.Ldc(xmlnsMember);
400
ilg
.If(Cmp.GreaterThan);
402
ilg
.EndIf();
411
SourceInfo source = new SourceInfo($"p[{i}]", null, null, pLengthLoc.LocalType.GetElementType()!,
ilg
);
422
specifiedSource = new SourceInfo($"((bool)p[{j}])", null, null, typeof(bool),
ilg
);
429
ilg
.Ldloc(pLengthLoc);
430
ilg
.Ldc(i);
431
ilg
.If(Cmp.GreaterThan);
435
Label labelTrue =
ilg
.DefineLabel();
436
Label labelEnd =
ilg
.DefineLabel();
437
ilg
.Ldloc(pLengthLoc);
438
ilg
.Ldc(specifiedPosition);
439
ilg
.Ble(labelTrue);
441
ilg
.Br_S(labelEnd);
442
ilg
.MarkLabel(labelTrue);
443
ilg
.Ldc(true);
444
ilg
.MarkLabel(labelEnd);
445
ilg
.If();
452
ilg
.EndIf();
455
ilg
.EndIf();
478
specifiedSource = new SourceInfo($"((bool)p[{j}])", null, null, typeof(bool),
ilg
);
485
ilg
.Ldloc(pLengthLoc);
486
ilg
.Ldc(i);
487
ilg
.If(Cmp.GreaterThan);
491
Label labelTrue =
ilg
.DefineLabel();
492
Label labelEnd =
ilg
.DefineLabel();
493
ilg
.Ldloc(pLengthLoc);
494
ilg
.Ldc(specifiedPosition);
495
ilg
.Ble(labelTrue);
497
ilg
.Br_S(labelEnd);
498
ilg
.MarkLabel(labelTrue);
499
ilg
.Ldc(true);
500
ilg
.MarkLabel(labelEnd);
501
ilg
.If();
524
WriteMember(new SourceInfo(source, source, null, null,
ilg
), enumSource, member.ElementsSortedByDerivation!, member.Text, member.ChoiceIdentifier, member.TypeDesc!, writeAccessors || hasWrapperElement);
528
ilg
.EndIf();
531
ilg
.EndIf();
538
ilg
.EndMethod();
548
ilg
.BeginMethod(
561
ilg
.Ldarg(0);
562
ilg
.Call(XmlSerializationWriter_WriteStartDocument);
564
ilg
.If(
ilg
.GetArg("o"), Cmp.EqualTo, null);
571
ilg
.GotoMethodEnd();
572
ilg
.EndIf();
581
ilg
.Ldarg(0);
582
ilg
.Call(XmlSerializationWriter_TopLevelElement);
585
WriteMember(new SourceInfo("o", "o", null, typeof(object),
ilg
), null, new ElementAccessor[] { element }, null, null, mapping.TypeDesc, true);
587
ilg
.EndMethod();
605
ilg
.BeginMethod(
611
LocalBuilder sLoc =
ilg
.DeclareLocal(typeof(string), "s");
612
ilg
.Load(null);
613
ilg
.Stloc(sLoc);
621
Label defaultLabel =
ilg
.DefineLabel();
622
Label endSwitchLabel =
ilg
.DefineLabel();
624
LocalBuilder localTmp =
ilg
.DeclareLocal(mapping.TypeDesc.Type!, "localTmp");
625
ilg
.Ldarg("v");
626
ilg
.Stloc(localTmp);
632
Label caseLabel =
ilg
.DefineLabel();
633
ilg
.Ldloc(localTmp);
634
ilg
.Ldc(Enum.ToObject(mapping.TypeDesc.Type!, c.Value));
635
ilg
.Beq(caseLabel);
644
ilg
.Br(defaultLabel);
647
ilg
.MarkLabel(caseLabels[i]);
648
ilg
.Ldc(retValues[i]);
649
ilg
.Stloc(sLoc);
650
ilg
.Br(endSwitchLabel);
652
ilg
.MarkLabel(defaultLabel);
653
ReflectionAwareILGen.ILGenForEnumLongValue(
ilg
, "v");
654
LocalBuilder strArray =
ilg
.DeclareLocal(typeof(string[]), "strArray");
655
ilg
.NewArray(typeof(string), constants.Length);
656
ilg
.Stloc(strArray);
660
ilg
.Ldloc(strArray);
661
ilg
.Ldc(i);
662
ilg
.Ldstr(GetCSharpString(c.XmlName));
663
ilg
.Stelem(typeof(string));
665
ilg
.Ldloc(strArray);
666
LocalBuilder longArray =
ilg
.DeclareLocal(typeof(long[]), "longArray");
667
ilg
.NewArray(typeof(long), constants.Length);
668
ilg
.Stloc(longArray);
673
ilg
.Ldloc(longArray);
674
ilg
.Ldc(i);
675
ilg
.Ldc(c.Value);
676
ilg
.Stelem(typeof(long));
678
ilg
.Ldloc(longArray);
679
ilg
.Ldstr(GetCSharpString(mapping.TypeDesc.FullName));
685
ilg
.Call(XmlSerializationWriter_FromEnum);
686
ilg
.Stloc(sLoc);
687
ilg
.Br(endSwitchLabel);
691
ilg
.Br(defaultLabel);
695
ilg
.MarkLabel(caseLabels[i]);
696
ilg
.Ldc(retValues[i]);
697
ilg
.Stloc(sLoc);
698
ilg
.Br(endSwitchLabel);
716
ilg
.MarkLabel(defaultLabel);
717
ilg
.Ldarg(0);
718
ilg
.Ldarg("v");
719
ilg
.ConvertValue(mapping.TypeDesc.Type!, typeof(long));
720
LocalBuilder numLoc =
ilg
.DeclareLocal(typeof(long), "num");
721
ilg
.Stloc(numLoc);
723
ilg
.LdlocAddress(numLoc);
724
ilg
.Call(CultureInfo_get_InvariantCulture);
725
ilg
.Call(Int64_ToString);
726
ilg
.Ldstr(GetCSharpString(mapping.TypeDesc.FullName));
727
ilg
.Call(XmlSerializationWriter_CreateInvalidEnumValueException);
728
ilg
.Throw();
730
ilg
.MarkLabel(endSwitchLabel);
732
ilg
.Ldloc(sLoc);
733
ilg
.EndMethod();
740
ilg
.InitElseIf();
742
ilg
.AndIf();
752
ilg
.Ldarg(0);
754
ilg
.Ldarg("n");
756
ilg
.Ldarg("ns");
757
object oVar =
ilg
.GetVariable("o");
759
ilg
.Load(oVar);
760
ilg
.ConvertValue(oType, derived.TypeDesc.Type!);
765
ilg
.Ldarg("isNullable");
768
ilg
.Ldc(true);
774
ilg
.Call(methodBuilder);
775
ilg
.GotoMethodEnd();
790
ilg
.InitElseIf();
793
ilg
.AndIf();
811
ilg
.Ldarg(0);
812
ilg
.Call(XmlSerializationWriter_get_Writer);
813
ilg
.Ldarg("n");
814
ilg
.Ldarg("ns");
815
ilg
.Call(XmlWriter_WriteStartElement);
821
ilg
.Ldarg(0);
822
ilg
.Ldstr(GetCSharpString(mapping.TypeName));
823
ilg
.Ldstr(GetCSharpString(mapping.Namespace));
824
ilg
.Call(XmlSerializationWriter_WriteXsiType);
836
ilg
.Ldarg(0);
837
ilg
.Call(XmlSerializationWriter_get_Writer);
838
object oVar =
ilg
.GetVariable("o");
839
ilg
.Ldarg(0);
840
ilg
.Load(oVar);
841
ilg
.ConvertValue(CodeGenerator.GetVariableType(oVar), mapping.TypeDesc.Type!);
842
ilg
.Call(methodBuilder);
843
ilg
.Call(XmlWriter_WriteString);
849
ilg
.Ldarg(0);
850
ilg
.Call(XmlSerializationWriter_get_Writer);
851
ilg
.Call(XmlWriter_WriteEndElement);
852
ilg
.GotoMethodEnd();
858
ilg
.InitElseIf();
864
ilg
.AndIf();
865
ilg
.EnterScope();
877
ilg
.Ldarg(0);
878
ilg
.Call(XmlSerializationWriter_get_Writer);
879
ilg
.Ldarg("n");
880
ilg
.Ldarg("ns");
881
ilg
.Call(XmlWriter_WriteStartElement);
887
ilg
.Ldarg(0);
888
ilg
.Ldstr(GetCSharpString(mapping.TypeName));
889
ilg
.Ldstr(GetCSharpString(mapping.Namespace));
890
ilg
.Call(XmlSerializationWriter_WriteXsiType);
892
WriteMember(new SourceInfo("o", "o", null, null,
ilg
), null, mapping.ElementsSortedByDerivation!, null, null, mapping.TypeDesc, true);
899
ilg
.Ldarg(0);
900
ilg
.Call(XmlSerializationWriter_get_Writer);
901
ilg
.Call(XmlWriter_WriteEndElement);
902
ilg
.GotoMethodEnd();
903
ilg
.ExitScope();
930
ilg
.BeginMethod(typeof(void),
937
ilg
.If(
ilg
.GetArg("o"), Cmp.EqualTo, null);
939
ilg
.If(
ilg
.GetArg("isNullable"), Cmp.EqualTo, true);
946
ilg
.Ldarg(0);
947
ilg
.Ldarg("n");
948
ilg
.Ldarg("ns");
949
ilg
.Call(XmlSerializationWriter_WriteNullTagLiteral);
951
ilg
.EndIf();
952
ilg
.GotoMethodEnd();
954
ilg
.EndIf();
956
ilg
.If(
ilg
.GetArg("needType"), Cmp.NotEqualTo, true); // if (!needType)
958
LocalBuilder tLoc =
ilg
.DeclareLocal(typeof(Type), "t");
964
ArgBuilder oArg =
ilg
.GetArg("o");
965
ilg
.LdargAddress(oArg);
966
ilg
.ConvertAddress(oArg.ArgType, typeof(object));
967
ilg
.Call(Object_GetType);
968
ilg
.Stloc(tLoc);
971
ilg
.If(); // if (t == typeof(...))
975
ilg
.Else();
983
ilg
.Ldarg(0);
984
ilg
.Ldarg("n");
985
ilg
.Ldarg("ns");
986
ilg
.Ldarg("o");
987
ilg
.Ldc(true);
988
ilg
.Call(XmlSerializationWriter_WriteTypedPrimitive);
989
ilg
.GotoMethodEnd();
998
ilg
.Ldarg(0);
999
ilg
.Ldarg(oArg);
1000
ilg
.ConvertValue(oArg.ArgType, typeof(object));
1001
ilg
.Call(XmlSerializationWriter_CreateUnknownTypeException);
1002
ilg
.Throw();
1004
ilg
.EndIf(); // if (t == typeof(...))
1005
ilg
.EndIf(); // if (!needType)
1016
ilg
.Ldarg(0);
1017
ilg
.Ldc(false);
1018
ilg
.Call(XmlSerializationWriter_set_EscapeName);
1031
ilg
.Ldarg(0);
1032
ilg
.Ldarg("n");
1033
ilg
.Ldarg("ns");
1034
ArgBuilder argO =
ilg
.GetArg("o");
1035
ilg
.Ldarg(argO);
1036
ilg
.ConvertValue(argO.ArgType, typeof(object));
1037
ilg
.Ldc(false);
1039
ilg
.Load(null);
1051
ilg
.Call(XmlSerializationWriter_WriteStartElement);
1054
ilg
.If(
ilg
.GetArg("needType"), Cmp.EqualTo, true);
1061
ilg
.Ldarg(0);
1062
ilg
.Ldstr(GetCSharpString(mapping.TypeName));
1063
ilg
.Ldstr(GetCSharpString(mapping.Namespace));
1064
ilg
.Call(XmlSerializationWriter_WriteXsiType);
1066
ilg
.EndIf();
1076
ilg
.LdargAddress(oArg);
1077
ilg
.Call(m.CheckShouldPersistMethodInfo!);
1078
ilg
.If();
1084
ilg
.If();
1086
WriteMember(ReflectionAwareILGen.GetSourceForMember("o", m,
ilg
), m.Attribute, m.TypeDesc!, "o");
1090
ilg
.EndIf();
1094
ilg
.EndIf();
1109
ilg
.LdargAddress(oArg);
1110
ilg
.Call(m.CheckShouldPersistMethodInfo!);
1111
ilg
.If();
1117
ilg
.If();
1127
WriteMember(ReflectionAwareILGen.GetSourceForMember("o", m, m.MemberInfo,
ilg
), choiceSource, m.ElementsSortedByDerivation!, m.Text, m.ChoiceIdentifier, m.TypeDesc!, true);
1131
ilg
.EndIf();
1135
ilg
.EndIf();
1140
ilg
.EndMethod();
1161
ilg
.EnterScope();
1165
ilg
.Ldloc(memberTypeDesc.Type!, aVar);
1166
ilg
.Load(null);
1167
ilg
.If(Cmp.NotEqualTo);
1184
ilg
.Ldarg(0);
1185
ilg
.Call(XmlSerializationWriter_get_Writer);
1186
ilg
.Load(null);
1187
ilg
.Ldstr(GetCSharpString(attribute.Name));
1188
ilg
.Ldstr(GetCSharpString(ns));
1189
ilg
.Call(XmlWriter_WriteStartAttribute);
1193
LocalBuilder sbLoc =
ilg
.DeclareOrGetLocal(typeof(StringBuilder), "sb");
1198
ilg
.New(StringBuilder_ctor);
1199
ilg
.Stloc(sbLoc);
1210
LocalBuilder localI =
ilg
.DeclareOrGetLocal(typeof(int), iVar);
1211
ilg
.For(localI, 0,
ilg
.GetLocal(aVar));
1222
ilg
.Ldloc(iVar);
1223
ilg
.Ldc(0);
1224
ilg
.If(Cmp.NotEqualTo);
1235
ilg
.Ldarg(0);
1236
ilg
.Call(XmlSerializationWriter_get_Writer);
1237
ilg
.Ldstr(" ");
1238
ilg
.Call(XmlWriter_WriteString);
1239
ilg
.EndIf();
1240
ilg
.Ldarg(0);
1251
ilg
.Ldloc(iVar);
1252
ilg
.Ldc(0);
1253
ilg
.If(Cmp.NotEqualTo);
1254
ilg
.Ldloc("sb");
1255
ilg
.Ldstr(" ");
1256
ilg
.Call(StringBuilder_Append);
1257
ilg
.Pop();
1258
ilg
.EndIf();
1259
ilg
.Ldloc("sb");
1264
WriteEnumValue((EnumMapping)attribute.Mapping, new SourceInfo(aiVar, aiVar, null, arrayElementTypeDesc.Type,
ilg
), out argType);
1266
WritePrimitiveValue(arrayElementTypeDesc, new SourceInfo(aiVar, aiVar, null, arrayElementTypeDesc.Type,
ilg
), out argType);
1272
ilg
.Call(method);
1274
ilg
.Pop();
1278
WriteAttribute(new SourceInfo(aiVar, aiVar, null, null,
ilg
), attribute, parent);
1283
ilg
.EndFor();
1299
ilg
.Ldarg(0);
1300
ilg
.Call(XmlSerializationWriter_get_Writer);
1301
ilg
.Call(XmlWriter_WriteEndAttribute);
1310
ilg
.Ldloc("sb");
1311
ilg
.Call(StringBuilder_get_Length);
1312
ilg
.Ldc(0);
1313
ilg
.If(Cmp.NotEqualTo);
1316
ilg
.Ldarg(0);
1317
ilg
.Ldstr(GetCSharpString(attribute.Name));
1322
ilg
.Ldstr(GetCSharpString(ns));
1330
ilg
.Ldloc("sb");
1331
ilg
.Call(Object_ToString);
1338
ilg
.Call(XmlSerializationWriter_WriteAttribute);
1339
ilg
.EndIf();
1345
ilg
.EndIf();
1348
ilg
.ExitScope();
1368
ilg
.Ldarg(0);
1369
ilg
.Ldloc(source.Source);
1370
ilg
.Ldarg(parent);
1371
ilg
.ConvertValue(
ilg
.GetArg(parent).ArgType, typeof(object));
1372
ilg
.Call(XmlSerializationWriter_WriteXmlAttribute);
1419
ilg
.EnterScope();
1421
LocalBuilder aLoc =
ilg
.GetLocal(aName);
1424
ilg
.Ldloc(aLoc);
1425
ilg
.Load(null);
1426
ilg
.If(Cmp.NotEqualTo);
1433
SourceInfo choiceSourceInfo = new SourceInfo(choiceSource!, null, choice.MemberInfo, null,
ilg
);
1437
Label labelEnd =
ilg
.DefineLabel();
1438
Label labelTrue =
ilg
.DefineLabel();
1439
LocalBuilder cLoc =
ilg
.GetLocal(cName);
1440
ilg
.Ldloc(cLoc);
1441
ilg
.Load(null);
1442
ilg
.Beq(labelTrue);
1443
ilg
.Ldloc(cLoc);
1444
ilg
.Ldlen();
1445
ilg
.Ldloc(aLoc);
1446
ilg
.Ldlen();
1447
ilg
.Clt();
1448
ilg
.Br(labelEnd);
1449
ilg
.MarkLabel(labelTrue);
1450
ilg
.Ldc(true);
1451
ilg
.MarkLabel(labelEnd);
1452
ilg
.If();
1458
ilg
.Ldarg(0);
1459
ilg
.Ldstr(GetCSharpString(choice.Mapping.TypeDesc.FullName));
1460
ilg
.Ldstr(GetCSharpString(choice.MemberName));
1461
ilg
.Call(XmlSerializationWriter_CreateInvalidChoiceIdentifierValueException);
1462
ilg
.Throw();
1463
ilg
.EndIf();
1469
ilg
.EndIf();
1472
ilg
.ExitScope();
1481
LocalBuilder eLoc =
ilg
.DeclareLocal(typeof(IEnumerator), "e");
1482
ilg
.LoadAddress(
ilg
.GetVariable(arrayName));
1494
ilg
.ConvertValue(arrayTypeDesc.Type!, typeIEnumerable);
1505
ilg
.ConvertValue(arrayTypeDesc.Type!, typeIEnumerable);
1513
ilg
.Call(getEnumeratorMethod);
1514
ilg
.ConvertValue(getEnumeratorMethod.ReturnType, typeof(IEnumerator));
1515
ilg
.Stloc(eLoc);
1517
ilg
.Ldloc(eLoc);
1518
ilg
.Load(null);
1519
ilg
.If(Cmp.NotEqualTo);
1520
ilg
.WhileBegin();
1524
WriteElements(new SourceInfo(arrayNamePlusI, null, null, arrayElementTypeDesc.Type,
ilg
), $"{choiceName}i", elements, text, choice, arrayNamePlusA, true, true);
1526
ilg
.WhileBeginCondition(); // while (e.MoveNext())
1531
ilg
.Ldloc(eLoc);
1532
ilg
.Call(IEnumerator_MoveNext);
1533
ilg
.WhileEndCondition();
1534
ilg
.WhileEnd();
1536
ilg
.EndIf(); // if (e != null)
1544
LocalBuilder localI =
ilg
.DeclareOrGetLocal(typeof(int), iPlusArrayName);
1545
ilg
.For(localI, 0,
ilg
.GetLocal(arrayName));
1554
WriteElements(new SourceInfo(arrayNamePlusI, null, null, arrayElementTypeDesc.Type,
ilg
), $"{choiceName}i", elements, text, choice, arrayNamePlusA, true, arrayElementTypeDesc.IsNullable);
1558
WriteElements(new SourceInfo(ReflectionAwareILGen.GetStringForArrayMember(arrayName, iPlusArrayName), null, null, arrayElementTypeDesc.Type,
ilg
), null, elements, text, choice, arrayNamePlusA, true, arrayElementTypeDesc.IsNullable);
1560
ilg
.EndFor();
1580
ilg
.Load(null);
1581
ilg
.If(Cmp.NotEqualTo);
1611
if (wroteFirstIf)
ilg
.InitElseIf();
1612
else { wroteFirstIf = true;
ilg
.InitIf(); }
1614
ilg
.Load(enumValue);
1615
ilg
.Ceq();
1618
Label labelFalse =
ilg
.DefineLabel();
1619
Label labelEnd =
ilg
.DefineLabel();
1620
ilg
.Brfalse(labelFalse);
1622
ilg
.Load(null);
1623
ilg
.Cne();
1624
ilg
.Br_S(labelEnd);
1625
ilg
.MarkLabel(labelFalse);
1626
ilg
.Ldc(false);
1627
ilg
.MarkLabel(labelEnd);
1629
ilg
.AndIf();
1639
if (wroteFirstIf)
ilg
.InitElseIf();
1640
else { wroteFirstIf = true;
ilg
.InitIf(); }
1643
ilg
.AndIf();
1656
else
ilg
.EndIf();
1661
if (elements.Length - anyCount > 0)
ilg
.InitElseIf();
1662
else
ilg
.InitIf();
1665
ilg
.IsInst(typeof(XmlElement));
1666
ilg
.Load(null);
1667
ilg
.Cne();
1668
ilg
.AndIf();
1670
LocalBuilder elemLoc =
ilg
.DeclareLocal(typeof(XmlElement), "elem");
1672
ilg
.Stloc(elemLoc);
1678
if (c++ > 0)
ilg
.InitElseIf();
1679
else
ilg
.InitIf();
1688
labelFalse =
ilg
.DefineLabel();
1689
labelEnd =
ilg
.DefineLabel();
1691
ilg
.Load(enumValue);
1692
ilg
.Bne(labelFalse);
1696
ilg
.Load(null);
1697
ilg
.Cne();
1701
ilg
.Ldc(true);
1703
ilg
.Br(labelEnd);
1704
ilg
.MarkLabel(labelFalse);
1705
ilg
.Ldc(false);
1706
ilg
.MarkLabel(labelEnd);
1707
ilg
.AndIf();
1709
labelFalse =
ilg
.DefineLabel();
1710
labelEnd =
ilg
.DefineLabel();
1721
ilg
.Ldloc(elemLoc);
1722
ilg
.Call(XmlNode_get_Name);
1723
ilg
.Ldstr(GetCSharpString(element.Name));
1729
ilg
.Call(String_op_Equality);
1730
ilg
.Brfalse(labelFalse);
1731
ilg
.Ldloc(elemLoc);
1732
ilg
.Call(XmlNode_get_NamespaceURI);
1733
ilg
.Ldstr(GetCSharpString(element.Namespace));
1734
ilg
.Call(String_op_Equality);
1735
ilg
.Br(labelEnd);
1736
ilg
.MarkLabel(labelFalse);
1737
ilg
.Ldc(false);
1738
ilg
.MarkLabel(labelEnd);
1739
if (choice != null)
ilg
.If();
1740
else
ilg
.AndIf();
1741
WriteElement(new SourceInfo("elem", null, null, elemLoc.LocalType,
ilg
), element, arrayName, writeAccessors);
1745
ilg
.Else();
1752
ilg
.Ldarg(0);
1753
ilg
.Ldstr(GetCSharpString(enumFullName));
1754
ilg
.Ldstr(GetCSharpString(choice.MemberName));
1755
ilg
.Ldloc(elemLoc);
1756
ilg
.Call(XmlNode_get_Name);
1757
ilg
.Ldloc(elemLoc);
1758
ilg
.Call(XmlNode_get_NamespaceURI);
1759
ilg
.Call(XmlSerializationWriter_CreateChoiceIdentifierValueException);
1760
ilg
.Throw();
1761
ilg
.EndIf();
1766
ilg
.Else();
1770
WriteElement(new SourceInfo("elem", null, null, elemLoc.LocalType,
ilg
), unnamedAny, arrayName, writeAccessors);
1779
ilg
.Ldarg(0);
1780
ilg
.Ldloc(elemLoc);
1791
ilg
.Call(XmlNode_get_Name);
1792
ilg
.Ldloc(elemLoc);
1793
ilg
.Call(XmlNode_get_NamespaceURI);
1794
ilg
.Call(XmlSerializationWriter_CreateUnknownAnyElementException);
1795
ilg
.Throw();
1799
ilg
.EndIf();
1806
ilg
.InitElseIf();
1808
ilg
.AndIf();
1822
ilg
.InitElseIf();
1824
ilg
.Load(null);
1825
ilg
.AndIf(Cmp.NotEqualTo);
1829
ilg
.Else();
1836
ilg
.Ldarg(0);
1838
ilg
.Call(XmlSerializationWriter_CreateUnknownTypeException);
1839
ilg
.Throw();
1841
ilg
.EndIf();
1845
ilg
.EndIf();
1854
ilg
.Ldarg(0);
1868
ilg
.Call(XmlSerializationWriter_WriteValue);
1886
ilg
.Ldarg(0);
1887
ilg
.Call(XmlSerializationWriter_get_Writer);
1888
ilg
.Call(WriteTo);
1910
ilg
.Call(Nullable_get_HasValue);
1915
ilg
.Load(null);
1916
ilg
.Cne();
1918
ilg
.If();
1925
ilg
.Else();
1928
ilg
.EndIf();
1938
ilg
.EnterScope();
1949
ilg
.Ldloc(
ilg
.GetLocal(arrayName));
1950
ilg
.Load(null);
1951
ilg
.If(Cmp.NotEqualTo);
1959
ilg
.EndIf();
1965
ilg
.EndIf();
1968
ilg
.ExitScope();
1997
ilg
.Ldarg(0);
1998
ilg
.Ldstr(GetCSharpString(name));
2000
ilg
.Ldstr(GetCSharpString(ns));
2006
ilg
.Ldc(element.IsNullable);
2009
ilg
.Ldc(false);
2016
ilg
.Call(methodBuilder);
2027
Label ifLabel1 =
ilg
.DefineLabel();
2028
Label ifLabel2 =
ilg
.DefineLabel();
2030
ilg
.IsInst(typeof(XmlNode));
2031
ilg
.Brtrue(ifLabel1);
2033
ilg
.Load(null);
2034
ilg
.Ceq();
2035
ilg
.Br(ifLabel2);
2036
ilg
.MarkLabel(ifLabel1);
2037
ilg
.Ldc(true);
2038
ilg
.MarkLabel(ifLabel2);
2039
ilg
.If();
2043
ilg
.Else();
2050
ilg
.Ldarg(0);
2052
ilg
.Call(XmlSerializationWriter_CreateInvalidAnyTypeException);
2053
ilg
.Throw();
2055
ilg
.EndIf();
2071
ilg
.Ldarg(0);
2073
ilg
.Ldstr(GetCSharpString(name));
2074
ilg
.Ldstr(GetCSharpString(ns));
2075
ilg
.Ldc(isNullable);
2076
ilg
.Ldc(isAny);
2077
ilg
.Call(XmlSerializationWriter_func);
2085
Label labelEnd =
ilg
.DefineLabel();
2086
Label labelFalse =
ilg
.DefineLabel();
2087
Label labelTrue =
ilg
.DefineLabel();
2091
ilg
.Brfalse(labelTrue);
2094
ilg
.Brfalse(labelFalse);
2101
ilg
.Call(String_get_Length);
2102
ilg
.Ldc(0);
2103
ilg
.Cne();
2104
ilg
.Br(labelEnd);
2107
ilg
.MarkLabel(labelTrue);
2108
ilg
.Ldc(true);
2112
ilg
.MarkLabel(labelFalse);
2113
ilg
.Ldc(false);
2115
ilg
.MarkLabel(labelEnd);
2116
ilg
.If();
2123
ilg
.Load(null);
2124
ilg
.Cne();
2129
ilg
.Ldc(Convert.ChangeType(value, source.Type!, CultureInfo.InvariantCulture));
2130
ilg
.Cne();
2136
ilg
.Ldc(value is string ? GetCSharpString((string)value) : value);
2143
ilg
.Call(op_Inequality);
2145
ilg
.Cne();
2147
ilg
.If();
2153
Label labelFalse =
ilg
.DefineLabel();
2154
Label labelEnd =
ilg
.DefineLabel();
2156
ilg
.Load(null);
2157
ilg
.Beq(labelFalse);
2160
ilg
.Ldc(false);
2161
ilg
.Ceq();
2162
ilg
.Br(labelEnd);
2163
ilg
.MarkLabel(labelFalse);
2164
ilg
.Ldc(false);
2165
ilg
.MarkLabel(labelEnd);
2166
ilg
.If();
2172
ilg
.Ldarg(0);
2173
ilg
.Ldstr(GetCSharpString(typeDesc.FullName));
2174
ilg
.Ldstr(GetCSharpString(choice.MemberName));
2175
ilg
.Ldstr(GetCSharpString(enumName));
2176
ilg
.Call(XmlSerializationWriter_CreateMismatchChoiceException);
2177
ilg
.Throw();
2178
ilg
.EndIf();
2183
LocalBuilder local =
ilg
.GetLocal(source);
2185
ilg
.Load(local);
2186
ilg
.Load(null);
2187
ilg
.If(Cmp.EqualTo);
2189
ilg
.Else();
2199
ilg
.Ldarg(0);
2201
ilg
.Call(XmlSerializationWriter_WriteNamespaceDeclarations);
2217
ReflectionAwareILGen.WriteLocalDecl(variableName, new SourceInfo(initValue, initValue, null, type,
ilg
));
2226
ReflectionAwareILGen.WriteTypeCompare(variable, type,
ilg
);
2231
ReflectionAwareILGen.WriteInstanceOf(source, type,
ilg
);
2235
ReflectionAwareILGen.WriteArrayTypeCompare(variable, arrayType,
ilg
);