23 writes to ilg
System.Xml (23)
System\Xml\Serialization\XmlSerializationILGen.cs (10)
133
ilg
= new CodeGenerator(serializerContractTypeBuilder);
212
ilg
= new CodeGenerator(serializerContractTypeBuilder);
264
ilg
= new CodeGenerator(baseSerializerTypeBuilder);
307
ilg
= new CodeGenerator(typedSerializerTypeBuilder);
341
ilg
= new CodeGenerator(typedSerializerTypeBuilder);
365
ilg
= new CodeGenerator(typedSerializerTypeBuilder);
420
ilg
= new CodeGenerator(serializerContractTypeBuilder);
472
ilg
= new CodeGenerator(serializerContractTypeBuilder);
495
ilg
= new CodeGenerator(serializerContractTypeBuilder);
531
ilg
= new CodeGenerator(serializerContractTypeBuilder);
System\Xml\Serialization\XmlSerializationReaderILGen.cs (8)
222
ilg
= new CodeGenerator(this.typeBuilder);
341
ilg
= new CodeGenerator(this.typeBuilder);
405
ilg
= new CodeGenerator(this.typeBuilder);
646
ilg
= new CodeGenerator(this.typeBuilder);
987
ilg
= new CodeGenerator(this.typeBuilder);
1060
ilg
= new CodeGenerator(this.typeBuilder);
1307
ilg
= new CodeGenerator(this.typeBuilder);
1357
ilg
= new CodeGenerator(this.typeBuilder);
System\Xml\Serialization\XmlSerializationWriterILGen.cs (5)
78
ilg
= new CodeGenerator(this.typeBuilder);
327
ilg
= new CodeGenerator(this.typeBuilder);
504
ilg
= new CodeGenerator(this.typeBuilder);
560
ilg
= new CodeGenerator(this.typeBuilder);
878
ilg
= new CodeGenerator(this.typeBuilder);
1664 references to ilg
System.Xml (1664)
System\Xml\Serialization\XmlSerializationILGen.cs (123)
141
ilg
.BeginMethod(
147
propertyBuilder.SetGetMethod(
ilg
.MethodBuilder);
149
ilg
.Ldarg(0);
150
ilg
.LoadMember(fieldBuilder);
151
ilg
.Load(null);
153
ilg
.If(Cmp.EqualTo);
161
LocalBuilder _tmpLoc =
ilg
.DeclareLocal(typeof(Hashtable), "_tmp");
162
ilg
.New(Hashtable_ctor);
163
ilg
.Stloc(_tmpLoc);
169
ilg
.Ldarg(0);
170
ilg
.LoadMember(fieldBuilder);
171
ilg
.Load(null);
172
ilg
.If(Cmp.EqualTo);
174
ilg
.Ldarg(0);
175
ilg
.Ldloc(typeof(Hashtable), "_tmp");
176
ilg
.StoreMember(fieldBuilder);
178
ilg
.EndIf();
180
ilg
.EndIf();
182
ilg
.Ldarg(0);
183
ilg
.LoadMember(fieldBuilder);
184
ilg
.GotoMethodEnd();
186
ilg
.EndMethod();
201
ilg
.Ldloc(typeof(Hashtable), "_tmp");
202
ilg
.Ldstr(xmlMappings[i].Key);
203
ilg
.Ldstr(methods[i]);
204
ilg
.Call(Hashtable_set_Item);
213
ilg
.BeginMethod(
233
ilg
.Ldarg("type");
234
ilg
.Ldc(type);
235
ilg
.If(Cmp.EqualTo);
237
ilg
.Ldc(true);
238
ilg
.GotoMethodEnd();
240
ilg
.EndIf();
242
ilg
.Ldc(false);
243
ilg
.GotoMethodEnd();
244
ilg
.EndMethod();
265
ilg
.BeginMethod(typeof(XmlSerializationReader),
270
ilg
.New(readerCtor);
271
ilg
.EndMethod();
279
ilg
.BeginMethod(typeof(XmlSerializationWriter),
284
ilg
.New(writerCtor);
285
ilg
.EndMethod();
308
ilg
.BeginMethod(
317
ilg
.Ldc(true);
318
ilg
.Stloc(
ilg
.ReturnLocal);
319
ilg
.Br(
ilg
.ReturnLabel);
329
ilg
.Ldarg(
ilg
.GetArg("xmlReader"));
330
ilg
.Ldstr(mapping.Accessor.Name);
331
ilg
.Ldstr(mapping.Accessor.Namespace);
332
ilg
.Call(XmlReader_IsStartElement);
333
ilg
.Stloc(
ilg
.ReturnLocal);
334
ilg
.Br(
ilg
.ReturnLabel);
336
ilg
.MarkLabel(
ilg
.ReturnLabel);
337
ilg
.Ldloc(
ilg
.ReturnLocal);
338
ilg
.EndMethod();
342
ilg
.BeginMethod(
355
ilg
.Ldarg("writer");
356
ilg
.Castclass(CreatedTypes[writerClass]);
357
ilg
.Ldarg("objectToSerialize");
359
ilg
.ConvertValue(typeof(object), typeof(object[]));
361
ilg
.Call(writerType_writeMethod);
362
ilg
.EndMethod();
366
ilg
.BeginMethod(
379
ilg
.Ldarg("reader");
380
ilg
.Castclass(CreatedTypes[readerClass]);
381
ilg
.Call(readerType_readMethod);
382
ilg
.EndMethod();
409
ilg
.Ldloc(typeof(Hashtable), "_tmp");
410
ilg
.Ldstr(key);
411
ilg
.New(ctor);
412
ilg
.Call(Hashtable_Add);
421
ilg
.BeginMethod(
438
ilg
.Ldarg("type");
439
ilg
.Ldc(type);
440
ilg
.If(Cmp.EqualTo);
448
ilg
.New(ctor);
449
ilg
.Stloc(
ilg
.ReturnLocal);
450
ilg
.Br(
ilg
.ReturnLabel);
452
ilg
.EndIf();
455
ilg
.Load(null);
456
ilg
.Stloc(
ilg
.ReturnLocal);
457
ilg
.Br(
ilg
.ReturnLabel);
458
ilg
.MarkLabel(
ilg
.ReturnLabel);
459
ilg
.Ldloc(
ilg
.ReturnLocal);
460
ilg
.EndMethod();
479
ilg
.BeginMethod(
485
propertyBuilder.SetGetMethod(
ilg
.MethodBuilder);
492
ilg
.New(ctor);
493
ilg
.EndMethod();
502
ilg
.BeginMethod(
508
propertyBuilder.SetGetMethod(
ilg
.MethodBuilder);
515
ilg
.New(ctor);
516
ilg
.EndMethod();
532
ilg
.BeginMethod(
539
ilg
.Ldarg(0);
540
ilg
.Load(null);
541
ilg
.StoreMember(readMethodsField);
542
ilg
.Ldarg(0);
543
ilg
.Load(null);
544
ilg
.StoreMember(writeMethodsField);
545
ilg
.Ldarg(0);
546
ilg
.Load(null);
547
ilg
.StoreMember(typedSerializersField);
548
ilg
.Ldarg(0);
549
ilg
.Call(baseCtor);
550
ilg
.EndMethod();
569
ilg
.LoadMember(
ilg
.GetVariable("o"), memInfo);
572
ilg
.ConvertValue(memType, type);
576
SourceInfo info = new SourceInfo(source, null, null, null,
ilg
);
System\Xml\Serialization\XmlSerializationReaderILGen.cs (950)
223
ilg
.BeginMethod(typeof(void), "InitIDs", CodeGenerator.EmptyTypeArray, CodeGenerator.EmptyStringArray,
248
ilg
.Ldarg(0);
249
ilg
.Ldarg(0);
250
ilg
.Call(XmlSerializationReader_get_Reader);
251
ilg
.Call(XmlReader_get_NameTable);
252
ilg
.Ldstr(id);
253
ilg
.Call(XmlNameTable_Add);
255
ilg
.StoreMember(idNameFields[id]);
257
ilg
.EndMethod();
295
ilg
.Ldarg(0);
296
ilg
.Call(XmlSerializationReader_get_Reader);
297
ilg
.Ldarg(0);
298
ilg
.LoadMember(idNameFields[name ?? String.Empty]);
299
ilg
.Ldarg(0);
300
ilg
.LoadMember(idNameFields[ns ?? String.Empty]);
301
ilg
.Call(XmlReader_IsStartElement);
302
ilg
.If();
307
ilg
.Else();
310
ilg
.Ldarg(0);
313
ilg
.Load(null);
315
object pVar =
ilg
.GetVariable("p");
316
ilg
.Load(pVar);
317
ilg
.ConvertValue(
ilg
.GetVariableType(pVar), typeof(object));
324
ilg
.Ldstr(ReflectionAwareILGen.GetCSharpString(expectedElement));
334
ilg
.Call(method);
336
ilg
.EndIf();
342
ilg
.BeginMethod(typeof(void), "InitCallbacks", CodeGenerator.EmptyTypeArray, CodeGenerator.EmptyStringArray,
347
ilg
.EndMethod();
350
ilg
.BeginMethod(
363
ilg
.Ldarg(0);
364
ilg
.Load(null);
365
ilg
.Call(XmlSerializationReader_UnknownNode1);
366
ilg
.Load(null);
367
ilg
.EndMethod();
406
ilg
.BeginMethod(
413
ilg
.Load(null);
414
ilg
.Stloc(
ilg
.ReturnLocal);
429
ilg
.Ldarg(0);
430
ilg
.Call(XmlSerializationReader_get_Reader);
431
ilg
.Call(XmlReader_MoveToContent);
432
ilg
.Pop();
434
LocalBuilder localP =
ilg
.DeclareLocal(typeof(object[]), "p");
435
ilg
.NewArray(typeof(object), mappings.Length);
436
ilg
.Stloc(localP);
517
ilg
.Ldarg(0);
518
ilg
.Ldc(true);
519
ilg
.Call(XmlSerializationReader_set_IsReturnValue);
536
ilg
.Ldarg(0);
537
ilg
.Call(XmlSerializationReader_get_Reader);
538
ilg
.Call(XmlReader_MoveToElement);
539
ilg
.Pop();
552
ilg
.Ldarg(0);
553
ilg
.Call(XmlSerializationReader_get_Reader);
554
ilg
.Call(XmlReader_get_IsEmptyElement);
555
ilg
.If();
564
ilg
.Ldarg(0);
565
ilg
.Call(XmlSerializationReader_get_Reader);
566
ilg
.Call(XmlReader_Skip);
567
ilg
.Ldarg(0);
568
ilg
.Call(XmlSerializationReader_get_Reader);
569
ilg
.Call(XmlReader_MoveToContent);
570
ilg
.Pop();
571
ilg
.WhileContinue();
573
ilg
.EndIf();
581
ilg
.Ldarg(0);
582
ilg
.Call(XmlSerializationReader_get_Reader);
583
ilg
.Call(XmlReader_ReadStartElement);
586
ilg
.Ldc(0);
587
ilg
.Stloc(typeof(Int32), "state");
594
ilg
.Ldarg(0);
595
ilg
.Call(XmlSerializationReader_get_Reader);
596
ilg
.Call(XmlReader_MoveToContent);
597
ilg
.Pop();
610
ilg
.Ldarg(0);
611
ilg
.Call(XmlSerializationReader_ReadEndElement);
616
ilg
.Ldarg(0);
617
ilg
.Call(XmlSerializationReader_get_Reader);
618
ilg
.Call(XmlReader_MoveToContent);
619
ilg
.Pop();
623
ilg
.Ldloc(
ilg
.GetLocal("p"));
624
ilg
.EndMethod();
633
LocalBuilder arrayLoc =
ilg
.GetLocal(arrayName);
634
ilg
.Ldloc(arrayLoc);
635
ilg
.Ldc(i);
636
RaCodeGen.ILGenForCreateInstance(
ilg
, mappings[i].TypeDesc.Type, false, false);
637
ilg
.ConvertValue(mappings[i].TypeDesc.Type, typeof(object));
638
ilg
.Stelem(arrayLoc.LocalType.GetElementType());
647
ilg
.BeginMethod(
654
LocalBuilder oLoc =
ilg
.DeclareLocal(typeof(object), "o");
655
ilg
.Load(null);
656
ilg
.Stloc(oLoc);
676
ilg
.Ldarg(0);
677
ilg
.Call(XmlSerializationReader_get_Reader);
678
ilg
.Call(XmlReader_MoveToContent);
679
ilg
.Pop();
682
ilg
.Ldloc(oLoc);
684
ilg
.Stloc(
ilg
.ReturnLocal);
685
ilg
.Ldloc(
ilg
.ReturnLocal);
686
ilg
.EndMethod();
712
ilg
.Ldarg(0);
728
ilg
.Ldarg(0);
729
ilg
.Call(XmlSerializationReader_get_Reader);
730
ilg
.Call(XmlReader_ReadXXXString);
747
ilg
.Ldarg(0);
748
ilg
.Call(XmlSerializationReader_get_Reader);
749
ilg
.Call(XmlReader_get_Value);
752
LocalBuilder locVals =
ilg
.GetLocal("vals");
753
LocalBuilder locI =
ilg
.GetLocal("i");
754
ilg
.LoadArrayElement(locVals, locI);
757
ilg
.Ldc(false);
762
ilg
.Call(methodBuilder);
780
ilg
.Ldarg(0);
781
ilg
.Call(XmlSerializationReader_get_Reader);
782
ilg
.Call(XmlReader_ReadXXXString);
799
ilg
.Ldarg(0);
800
ilg
.Call(XmlSerializationReader_get_Reader);
801
ilg
.Call(XmlReader_get_Value);
804
LocalBuilder locVals =
ilg
.GetLocal("vals");
805
LocalBuilder locI =
ilg
.GetLocal("i");
806
ilg
.LoadArrayElement(locVals, locI);
815
ilg
.Ldarg(0);
816
LocalBuilder locVals =
ilg
.GetLocal("vals");
817
LocalBuilder locI =
ilg
.GetLocal("i");
818
ilg
.LoadArrayElement(locVals, locI);
827
ilg
.Call(XmlSerializationReader_CollapseWhitespace);
847
ilg
.Ldarg(0);
848
ilg
.Ldarg(0);
849
ilg
.Call(XmlSerializationReader_get_Reader);
850
ilg
.Call(XmlReader_method);
859
ilg
.Call(XmlSerializationReader_CollapseWhitespace);
875
ilg
.Ldarg(0);
910
ilg
.Ldarg(0);
911
ilg
.Call(XmlSerializationReader_get_Reader);
912
ilg
.Call(XmlReader_ReadXXXString);
929
ilg
.Ldarg(0);
930
ilg
.Call(XmlSerializationReader_get_Reader);
931
ilg
.Call(XmlReader_get_Value);
934
LocalBuilder locVals =
ilg
.GetLocal("vals");
935
LocalBuilder locI =
ilg
.GetLocal("i");
936
ilg
.LoadArrayElement(locVals, locI);
940
ilg
.Ldc(false);
942
ilg
.Call(ToXXX);
988
ilg
.BeginMethod(
995
ilg
.Ldarg(0);
996
ilg
.LoadMember(fieldBuilder);
997
ilg
.Load(null);
998
ilg
.If(Cmp.EqualTo);
1006
LocalBuilder hLoc =
ilg
.DeclareLocal(typeof(Hashtable), "h");
1007
ilg
.New(Hashtable_ctor);
1008
ilg
.Stloc(hLoc);
1020
ilg
.Ldloc(hLoc);
1021
ilg
.Ldstr(constants[i].XmlName);
1022
ilg
.Ldc(Enum.ToObject(mapping.TypeDesc.Type, constants[i].Value));
1023
ilg
.ConvertValue(mapping.TypeDesc.Type, typeof(long));
1024
ilg
.ConvertValue(typeof(long), typeof(Object));
1026
ilg
.Call(Hashtable_Add);
1029
ilg
.Ldarg(0);
1030
ilg
.Ldloc(hLoc);
1031
ilg
.StoreMember(fieldBuilder);
1033
ilg
.EndIf();
1035
ilg
.Ldarg(0);
1036
ilg
.LoadMember(fieldBuilder);
1038
get_TableName =
ilg
.EndMethod();
1061
ilg
.BeginMethod(
1078
ilg
.Ldarg("s");
1079
ilg
.Ldarg(0);
1081
ilg
.Call(get_TableName);
1082
ilg
.Ldstr(fullTypeName);
1083
ilg
.Call(XmlSerializationReader_ToEnum);
1086
ilg
.ConvertValue(typeof(long), underlyingType);
1088
ilg
.Stloc(
ilg
.ReturnLocal);
1089
ilg
.Br(
ilg
.ReturnLabel);
1095
Label defaultLabel =
ilg
.DefineLabel();
1096
Label endSwitchLabel =
ilg
.DefineLabel();
1098
LocalBuilder localTmp =
ilg
.GetTempLocal(typeof(string));
1099
ilg
.Ldarg("s");
1100
ilg
.Stloc(localTmp);
1101
ilg
.Ldloc(localTmp);
1102
ilg
.Brfalse(defaultLabel);
1110
Label caseLabel =
ilg
.DefineLabel();
1111
ilg
.Ldloc(localTmp);
1112
ilg
.Ldstr(c.XmlName);
1120
ilg
.Call(String_op_Equality);
1121
ilg
.Brtrue(caseLabel);
1127
ilg
.Br(defaultLabel);
1130
ilg
.MarkLabel(caseLabels[i]);
1131
ilg
.Ldc(retValues[i]);
1132
ilg
.Stloc(
ilg
.ReturnLocal);
1133
ilg
.Br(
ilg
.ReturnLabel);
1143
ilg
.MarkLabel(defaultLabel);
1144
ilg
.Ldarg(0);
1145
ilg
.Ldarg("s");
1147
ilg
.Ldc(mapping.TypeDesc.Type);
1148
ilg
.Call(XmlSerializationReader_CreateUnknownConstantException);
1149
ilg
.Throw();
1151
ilg
.MarkLabel(endSwitchLabel);
1154
ilg
.MarkLabel(
ilg
.ReturnLabel);
1155
ilg
.Ldloc(
ilg
.ReturnLocal);
1156
ilg
.EndMethod();
1162
ilg
.InitElseIf();
1164
ilg
.AndIf();
1173
ilg
.Ldarg(0);
1175
ilg
.Ldarg("isNullable");
1178
ilg
.Ldc(false);
1187
ilg
.Call(methodBuilder);
1188
ilg
.ConvertValue(methodBuilder.ReturnType,
ilg
.ReturnLocal.LocalType);
1189
ilg
.Stloc(
ilg
.ReturnLocal);
1190
ilg
.Br(
ilg
.ReturnLabel);
1201
ilg
.InitElseIf();
1203
ilg
.AndIf();
1218
ilg
.Ldarg(0);
1219
ilg
.Call(XmlSerializationReader_get_Reader);
1220
ilg
.Call(XmlReader_ReadStartElement);
1226
LocalBuilder eLoc =
ilg
.DeclareOrGetLocal(typeof(object), "e");
1247
ilg
.Ldarg(0);
1248
ilg
.Ldarg(0);
1249
ilg
.Ldarg(0);
1250
ilg
.Call(XmlSerializationReader_get_Reader);
1251
ilg
.Call(XmlReader_ReadString);
1252
ilg
.Call(XmlSerializationReader_CollapseWhitespace);
1253
ilg
.Call(methodBuilder);
1254
ilg
.ConvertValue(methodBuilder.ReturnType, eLoc.LocalType);
1255
ilg
.Stloc(eLoc);
1263
ilg
.Ldarg(0);
1264
ilg
.Call(XmlSerializationReader_ReadEndElement);
1265
ilg
.Ldloc(eLoc);
1266
ilg
.Stloc(
ilg
.ReturnLocal);
1267
ilg
.Br(
ilg
.ReturnLabel);
1273
ilg
.InitElseIf();
1275
ilg
.AndIf();
1276
ilg
.EnterScope();
1285
LocalBuilder aLoc =
ilg
.DeclareLocal(mapping.TypeDesc.Type, aVar);
1287
RaCodeGen.ILGenForCreateInstance(
ilg
, td.Type, false, false);
1290
ilg
.Load(null);
1291
ilg
.Stloc(aLoc);
1294
ilg
.Ldloc(aLoc);
1295
ilg
.Stloc(
ilg
.ReturnLocal);
1296
ilg
.Br(
ilg
.ReturnLabel);
1297
ilg
.ExitScope();
1308
ilg
.BeginMethod(
1315
LocalBuilder oLoc =
ilg
.DeclareLocal(nullableMapping.TypeDesc.Type, "o");
1317
ilg
.LoadAddress(oLoc);
1318
ilg
.InitObj(nullableMapping.TypeDesc.Type);
1325
ilg
.Ldarg(0);
1326
ilg
.Call(XmlSerializationReader_ReadNull);
1327
ilg
.If();
1329
ilg
.Ldloc(oLoc);
1330
ilg
.Stloc(
ilg
.ReturnLocal);
1331
ilg
.Br(
ilg
.ReturnLabel);
1333
ilg
.EndIf();
1341
ilg
.Ldloc(oLoc);
1342
ilg
.Stloc(
ilg
.ReturnLocal);
1343
ilg
.Br(
ilg
.ReturnLabel);
1345
ilg
.MarkLabel(
ilg
.ReturnLabel);
1346
ilg
.Ldloc(
ilg
.ReturnLocal);
1347
ilg
.EndMethod();
1366
ilg
.BeginMethod(
1373
LocalBuilder locXsiType =
ilg
.DeclareLocal(typeof(XmlQualifiedName), "xsiType");
1374
LocalBuilder locIsNull =
ilg
.DeclareLocal(typeof(Boolean), "isNull");
1389
Label labelTrue =
ilg
.DefineLabel();
1390
Label labelEnd =
ilg
.DefineLabel();
1391
ilg
.Ldarg("checkType");
1392
ilg
.Brtrue(labelTrue);
1393
ilg
.Load(null);
1394
ilg
.Br_S(labelEnd);
1395
ilg
.MarkLabel(labelTrue);
1396
ilg
.Ldarg(0);
1397
ilg
.Call(XmlSerializationReader_GetXsiType);
1398
ilg
.MarkLabel(labelEnd);
1399
ilg
.Stloc(locXsiType);
1400
ilg
.Ldc(false);
1401
ilg
.Stloc(locIsNull);
1403
ilg
.Ldarg("isNullable");
1404
ilg
.If();
1406
ilg
.Ldarg(0);
1407
ilg
.Call(XmlSerializationReader_ReadNull);
1408
ilg
.Stloc(locIsNull);
1410
ilg
.EndIf();
1413
ilg
.Ldarg("checkType");
1414
ilg
.If(); // if (checkType)
1416
ilg
.Ldloc(locIsNull);
1417
ilg
.If();
1418
ilg
.Ldloc(locXsiType);
1419
ilg
.Load(null);
1420
ilg
.If(Cmp.NotEqualTo);
1428
ilg
.Ldarg(0);
1429
ilg
.Ldloc(locXsiType);
1430
ilg
.Call(XmlSerializationReader_ReadTypedNull);
1431
ilg
.Stloc(
ilg
.ReturnLocal);
1432
ilg
.Br(
ilg
.ReturnLabel);
1433
ilg
.Else();
1438
ilg
.Load(null);
1439
ilg
.Stloc(
ilg
.ReturnLocal);
1440
ilg
.Br(
ilg
.ReturnLabel);
1442
ilg
.EndIf(); // if (xsiType != null)
1444
ilg
.EndIf(); // if (isNull)
1446
ilg
.Ldloc(typeof(XmlQualifiedName), "xsiType");
1447
ilg
.Load(null);
1448
ilg
.Ceq();
1450
labelTrue =
ilg
.DefineLabel();
1451
labelEnd =
ilg
.DefineLabel();
1453
ilg
.Brtrue(labelTrue);
1456
ilg
.Br_S(labelEnd);
1457
ilg
.MarkLabel(labelTrue);
1458
ilg
.Ldc(true);
1459
ilg
.MarkLabel(labelEnd);
1461
ilg
.If(); // if (xsiType == null
1476
ilg
.Ldarg(0);
1477
ilg
.Ldstr(Soap.UrType);
1478
ilg
.Ldstr(XmlSchema.Namespace);
1479
ilg
.New(XmlQualifiedName_ctor);
1480
ilg
.Call(XmlSerializationReader_ReadTypedPrimitive);
1481
ilg
.Stloc(
ilg
.ReturnLocal);
1482
ilg
.Br(
ilg
.ReturnLabel);
1486
ilg
.Else(); // if (xsiType == null
1495
ilg
.Ldarg(0);
1496
ilg
.Ldloc(locXsiType);
1497
ilg
.Call(XmlSerializationReader_ReadTypedPrimitive);
1498
ilg
.Stloc(
ilg
.ReturnLocal);
1499
ilg
.Br(
ilg
.ReturnLabel);
1509
ilg
.Ldarg(0);
1510
ilg
.Ldloc(locXsiType);
1511
ilg
.Call(XmlSerializationReader_CreateUnknownTypeException);
1512
ilg
.Throw();
1514
ilg
.EndIf(); // if (xsiType == null
1515
ilg
.EndIf(); // checkType
1518
ilg
.Ldloc(typeof(bool), "isNull");
1519
ilg
.If();
1521
ilg
.Load(null);
1522
ilg
.Stloc(
ilg
.ReturnLocal);
1523
ilg
.Br(
ilg
.ReturnLabel);
1525
ilg
.EndIf();
1536
ilg
.Ldarg(0);
1537
ilg
.Ldstr(structMapping.TypeName);
1538
ilg
.Ldstr(structMapping.Namespace);
1539
ilg
.Call(XmlSerializationReader_CreateAbstractTypeException);
1540
ilg
.Throw();
1551
ilg
.Ldarg(0);
1552
ilg
.Ldc(false);
1553
ilg
.Call(XmlSerializationReader_set_DecodeName);
1556
LocalBuilder oLoc =
ilg
.GetLocal("o");
1648
ilg
.Ldarg(0);
1649
ilg
.Call(XmlSerializationReader_get_Reader);
1650
ilg
.Call(XmlReader_MoveToElement);
1651
ilg
.Pop();
1660
ilg
.Ldarg(0);
1661
ilg
.Call(XmlSerializationReader_get_Reader);
1662
ilg
.Call(XmlReader_get_IsEmptyElement);
1663
ilg
.If();
1671
ilg
.Ldarg(0);
1672
ilg
.Call(XmlSerializationReader_get_Reader);
1673
ilg
.Call(XmlReader_Skip);
1675
ilg
.Ldloc(oLoc);
1676
ilg
.Stloc(
ilg
.ReturnLocal);
1677
ilg
.Br(
ilg
.ReturnLabel);
1678
ilg
.EndIf();
1687
ilg
.Ldarg(0);
1688
ilg
.Call(XmlSerializationReader_get_Reader);
1689
ilg
.Call(XmlReader_ReadStartElement);
1691
ilg
.Ldc(0);
1692
ilg
.Stloc(typeof(Int32), "state");
1704
ilg
.Ldarg(0);
1705
ilg
.Call(XmlSerializationReader_get_Reader);
1706
ilg
.Call(XmlReader_MoveToContent);
1707
ilg
.Pop();
1719
ilg
.Ldarg(0);
1720
ilg
.Call(XmlSerializationReader_ReadEndElement);
1721
ilg
.Ldloc(structMapping.TypeDesc.Type, "o");
1722
ilg
.Stloc(
ilg
.ReturnLocal);
1724
ilg
.MarkLabel(
ilg
.ReturnLabel);
1725
ilg
.Ldloc(
ilg
.ReturnLocal);
1726
ilg
.EndMethod();
1748
Label labelEnd =
ilg
.DefineLabel();
1749
Label labelFalse =
ilg
.DefineLabel();
1750
LocalBuilder sLoc =
ilg
.GetLocal(source);
1751
ilg
.Ldloc(sLoc);
1752
ilg
.Call(XmlQualifiedName_get_Name);
1753
ilg
.Ldarg(0);
1754
ilg
.LoadMember(idNameFields[name ?? String.Empty]);
1755
ilg
.Bne(labelFalse);
1756
ilg
.Ldloc(sLoc);
1757
ilg
.Call(XmlQualifiedName_get_Namespace);
1758
ilg
.Ldarg(0);
1759
ilg
.LoadMember(idNameFields[ns ?? String.Empty]);
1760
ilg
.Ceq();
1761
ilg
.Br_S(labelEnd);
1762
ilg
.MarkLabel(labelFalse);
1763
ilg
.Ldc(false);
1764
ilg
.MarkLabel(labelEnd);
1800
Label labelFalse =
ilg
.DefineLabel();
1801
Label labelEnd =
ilg
.DefineLabel();
1804
ilg
.Ldarg(0);
1805
ilg
.Call(XmlSerializationReader_get_Reader);
1806
ilg
.Call(XmlReader_get_LocalName);
1807
ilg
.Ldarg(0);
1808
ilg
.LoadMember(idNameFields[name ?? String.Empty]);
1809
ilg
.Bne(labelFalse);
1812
ilg
.Ldarg(0);
1813
ilg
.Call(XmlSerializationReader_get_Reader);
1814
ilg
.Call(XmlReader_get_NamespaceURI);
1815
ilg
.Ldarg(0);
1816
ilg
.LoadMember(idNameFields[ns ?? String.Empty]);
1817
ilg
.Ceq();
1820
ilg
.Br_S(labelEnd);
1821
ilg
.MarkLabel(labelFalse);
1822
ilg
.Ldc(false);
1823
ilg
.MarkLabel(labelEnd);
1826
ilg
.AndIf();
1863
ilg
.WhileBegin();
1881
ilg
.InitElseIf();
1883
ilg
.InitIf();
1887
ilg
.Ldc(false);
1888
ilg
.AndIf(Cmp.EqualTo);
1901
ilg
.InitElseIf();
1903
ilg
.InitIf();
1934
ilg
.Ldarg(0);
1935
ilg
.Ldarg(0);
1936
ilg
.Call(XmlSerializationReader_get_Reader);
1937
ilg
.Call(XmlReader_get_Name);
1938
ilg
.Call(XmlSerializationReader_IsXmlnsAttribute);
1939
ilg
.Ldc(true);
1940
ilg
.AndIf(Cmp.EqualTo);
1943
ilg
.Load(null);
1944
ilg
.If(Cmp.EqualTo);
1952
ilg
.New(ctor);
1954
ilg
.EndIf(); // if (xmlnsMember.Source == null
1956
Label labelEqual5 =
ilg
.DefineLabel();
1957
Label labelEndLength =
ilg
.DefineLabel();
1973
ilg
.Ldarg(0);
1974
ilg
.Call(XmlSerializationReader_get_Reader);
1975
ilg
.Call(XmlReader_get_Name);
1976
ilg
.Call(String_get_Length);
1977
ilg
.Ldc(5);
1978
ilg
.Beq(labelEqual5);
1979
ilg
.Ldarg(0);
1980
ilg
.Call(XmlSerializationReader_get_Reader);
1981
ilg
.Call(XmlReader_get_LocalName);
1982
ilg
.Br(labelEndLength);
1983
ilg
.MarkLabel(labelEqual5);
1984
ilg
.Ldstr(String.Empty);
1985
ilg
.MarkLabel(labelEndLength);
1986
ilg
.Ldarg(0);
1987
ilg
.Call(XmlSerializationReader_get_Reader);
1988
ilg
.Call(XmlReader_get_Value);
1989
ilg
.Call(Add);
1991
ilg
.Else();
2008
ilg
.Ldarg(0);
2009
ilg
.Ldarg(0);
2010
ilg
.Call(XmlSerializationReader_get_Reader);
2011
ilg
.Call(XmlReader_get_Name);
2012
ilg
.Call(XmlSerializationReader_IsXmlnsAttribute);
2013
ilg
.Ldc(false);
2014
ilg
.AndIf(Cmp.EqualTo);
2017
LocalBuilder localAttr =
ilg
.DeclareOrGetLocal(typeof(XmlAttribute), "attr");
2032
ilg
.Ldarg(0);
2033
ilg
.Call(XmlSerializationReader_get_Document);
2034
ilg
.Ldarg(0);
2035
ilg
.Call(XmlSerializationReader_get_Reader);
2036
ilg
.Call(XmlDocument_ReadNode);
2037
ilg
.ConvertValue(XmlDocument_ReadNode.ReturnType, localAttr.LocalType);
2038
ilg
.Stloc(localAttr);
2046
ilg
.Ldarg(0);
2047
ilg
.Ldloc(localAttr);
2048
ilg
.Call(XmlSerializationReader_ParseWsdlArrayType);
2053
ilg
.Ldarg(0);
2055
ilg
.Ldloc(firstParam);
2056
ilg
.ConvertValue(firstParam.LocalType, typeof(object));
2067
ilg
.Ldstr(qnames);
2077
ilg
.Call(elseCallMethod);
2079
ilg
.EndIf();
2081
ilg
.WhileBeginCondition();
2083
ilg
.Ldarg(0);
2084
ilg
.Call(XmlSerializationReader_get_Reader);
2085
ilg
.Call(XmlReader_MoveToNextAttribute);
2087
ilg
.WhileEndCondition();
2088
ilg
.WhileEnd();
2100
ilg
.Ldloc("attr");
2104
LocalBuilder attrLoc =
ilg
.GetLocal("attr");
2105
ilg
.Ldloc(attrLoc);
2108
ilg
.Load(null);
2109
ilg
.Cne();
2112
ilg
.IsInst(typeof(XmlAttribute));
2113
ilg
.If();
2115
ilg
.Ldloc(attrLoc);
2116
ilg
.ConvertValue(attrLoc.LocalType, typeof(XmlAttribute));
2118
ilg
.EndIf();
2125
LocalBuilder locListValues =
ilg
.DeclareOrGetLocal(typeof(string), "listValues");
2126
LocalBuilder locVals =
ilg
.DeclareOrGetLocal(typeof(string[]), "vals");
2148
ilg
.Ldarg(0);
2149
ilg
.Call(XmlSerializationReader_get_Reader);
2150
ilg
.Call(XmlReader_get_Value);
2151
ilg
.Stloc(locListValues);
2152
ilg
.Ldloc(locListValues);
2153
ilg
.Load(null);
2154
ilg
.Call(String_Split);
2155
ilg
.Stloc(locVals);
2156
LocalBuilder localI =
ilg
.DeclareOrGetLocal(typeof(Int32), "i");
2157
ilg
.For(localI, 0, locVals);
2164
ilg
.EndFor();
2194
ilg
.Ldc(0);
2195
ilg
.Stloc(typeof(int), c);
2201
ilg
.Ldc(0);
2202
ilg
.Stloc(typeof(int), "c" + member.ChoiceArrayName);
2210
ilg
.Ldloc(
ilg
.GetLocal(a));
2217
ilg
.Load(null);
2218
ilg
.If(Cmp.EqualTo);
2227
ilg
.Ldarg(0);
2228
ilg
.Ldstr(member.Mapping.TypeDesc.CSharpName);
2229
ilg
.Call(XmlSerializationReader_CreateReadOnlyCollectionException);
2230
ilg
.Throw();
2234
RaCodeGen.ILGenForCreateInstance(
ilg
, member.Mapping.TypeDesc.Type, typeDesc.CannotNew, true);
2237
ilg
.EndIf(); // if ((object)(member.Source) == null
2239
WriteLocalDecl(a, new SourceInfo(member.Source, member.Source, member.Mapping.MemberInfo, member.Mapping.TypeDesc.Type,
ilg
));
2278
ilg
.Load(null);
2279
ilg
.Stloc(typeof(string), "tmp");
2297
ilg
.Ldarg(0);
2298
ilg
.Call(XmlSerializationReader_get_Reader);
2299
ilg
.Call(XmlReader_get_NodeType);
2300
ilg
.Ldc(XmlNodeType_Element);
2301
ilg
.If(Cmp.EqualTo);
2308
ilg
.Else();
2310
ilg
.EndIf();
2314
ilg
.InitElseIf();
2315
Label labelTrue =
ilg
.DefineLabel();
2316
Label labelEnd =
ilg
.DefineLabel();
2331
ilg
.Ldarg(0);
2332
ilg
.Call(XmlSerializationReader_get_Reader);
2333
ilg
.Call(XmlReader_get_NodeType);
2334
ilg
.Ldc(XmlNodeType.Text);
2335
ilg
.Ceq();
2336
ilg
.Brtrue(labelTrue);
2337
ilg
.Ldarg(0);
2338
ilg
.Call(XmlSerializationReader_get_Reader);
2339
ilg
.Call(XmlReader_get_NodeType);
2340
ilg
.Ldc(XmlNodeType.CDATA);
2341
ilg
.Ceq();
2342
ilg
.Brtrue(labelTrue);
2343
ilg
.Ldarg(0);
2344
ilg
.Call(XmlSerializationReader_get_Reader);
2345
ilg
.Call(XmlReader_get_NodeType);
2346
ilg
.Ldc(XmlNodeType.Whitespace);
2347
ilg
.Ceq();
2348
ilg
.Brtrue(labelTrue);
2349
ilg
.Ldarg(0);
2350
ilg
.Call(XmlSerializationReader_get_Reader);
2351
ilg
.Call(XmlReader_get_NodeType);
2352
ilg
.Ldc(XmlNodeType.SignificantWhitespace);
2353
ilg
.Ceq();
2354
ilg
.Br(labelEnd);
2355
ilg
.MarkLabel(labelTrue);
2356
ilg
.Ldc(true);
2357
ilg
.MarkLabel(labelEnd);
2358
ilg
.AndIf();
2403
ilg
.Ldarg(0);
2404
ilg
.Call(XmlSerializationReader_get_Document);
2405
ilg
.Ldarg(0);
2406
ilg
.Call(XmlSerializationReader_get_Reader);
2407
ilg
.Call(XmlReader_ReadString);
2408
ilg
.Call(XmlDocument_CreateTextNode);
2419
ilg
.Ldarg(0); // for calling CollapseWhitespace
2437
ilg
.Ldarg(0);
2438
ilg
.Call(XmlSerializationReader_get_Reader);
2439
ilg
.Call(XmlReader_ReadString);
2448
ilg
.Call(XmlSerializationReader_CollapseWhitespace);
2453
LocalBuilder tmpLoc =
ilg
.GetLocal("tmp");
2461
ilg
.Ldarg(0);
2462
ilg
.Ldloc(tmpLoc);
2463
ilg
.Ldc(text.Mapping.TypeDesc.CollapseWhitespace);
2464
ilg
.Call(XmlSerializationReader_ReadString);
2465
ilg
.Stloc(tmpLoc);
2468
ilg
.Ldloc(tmpLoc);
2528
ilg
.InitElseIf();
2532
ilg
.InitElseIf();
2534
ilg
.InitIf();
2535
ilg
.Ldloc("state");
2536
ilg
.Ldc(cases);
2537
ilg
.AndIf(Cmp.EqualTo);
2538
ilg
.InitIf();
2541
ilg
.InitIf();
2547
ilg
.Ldc(false);
2548
ilg
.AndIf(Cmp.EqualTo);
2550
Label labelTrue =
ilg
.DefineLabel();
2551
Label labelEnd =
ilg
.DefineLabel();
2560
ilg
.Ldarg(0);
2561
ilg
.Call(XmlSerializationReader_get_IsReturnValue);
2562
ilg
.Brtrue(labelTrue);
2565
ilg
.Ldc(true);
2571
ilg
.Br_S(labelEnd);
2572
ilg
.MarkLabel(labelTrue);
2573
ilg
.Ldc(true);
2574
ilg
.MarkLabel(labelEnd);
2576
ilg
.AndIf();
2587
ilg
.Ldarg(0);
2588
ilg
.Ldc(false);
2589
ilg
.Call(XmlSerializationReader_set_IsReturnValue);
2597
ilg
.Else();
2600
ilg
.EndIf();
2603
ilg
.Ldc(cases);
2604
ilg
.Stloc(
ilg
.GetLocal("state"));
2606
ilg
.EndIf();
2611
ilg
.Else();
2615
ilg
.EndIf();
2677
ilg
.Ldarg(0);
2678
ilg
.Ldloc(
ilg
.GetLocal(a));
2679
ilg
.Ldloc(
ilg
.GetLocal(c));
2680
ilg
.Ldc(typeDesc.ArrayElementTypeDesc.Type);
2681
ilg
.Ldc(member.IsNullable);
2682
ilg
.Call(XmlSerializationReader_ShrinkArray);
2683
ilg
.ConvertValue(XmlSerializationReader_ShrinkArray.ReturnType, typeDesc.Type);
2691
ilg
.Ldarg(0);
2692
ilg
.Ldloc(
ilg
.GetLocal(a));
2693
ilg
.Ldloc(
ilg
.GetLocal(c));
2694
ilg
.Ldc(member.Mapping.ChoiceIdentifier.Mapping.TypeDesc.Type);
2695
ilg
.Ldc(member.IsNullable);
2696
ilg
.Call(XmlSerializationReader_ShrinkArray);
2697
ilg
.ConvertValue(XmlSerializationReader_ShrinkArray.ReturnType, member.Mapping.ChoiceIdentifier.Mapping.TypeDesc.Type.MakeArrayType());
2703
LocalBuilder arrayLoc =
ilg
.GetLocal(member.ArrayName);
2705
ilg
.Ldloc(arrayLoc);
2718
if (
ilg
.TryGetVariable(source, out variable)) {
2719
Type varType =
ilg
.GetVariableType(variable);
2722
ilg
.LoadAddress(variable);
2728
ilg
.LdlocAddress(
ilg
.GetLocal("o"));
2739
LocalBuilder localA =
ilg
.GetLocal(match.Groups["locA1"].Value);
2740
LocalBuilder localI =
ilg
.GetLocal(match.Groups["locI1"].Value);
2749
ilg
.Ldarg(0);
2750
ilg
.Ldloc(localA);
2751
ilg
.Ldloc(localI);
2752
ilg
.Ldc(arrayElementType);
2753
ilg
.Call(XmlSerializationReader_EnsureArrayIndex);
2754
ilg
.Castclass(localA.LocalType);
2755
ilg
.Stloc(localA);
2758
ilg
.Ldloc(localA);
2759
ilg
.Ldloc(localI);
2760
ilg
.Dup();
2761
ilg
.Ldc(1);
2762
ilg
.Add();
2763
ilg
.Stloc(localI);
2765
ilg
.Ldelema(arrayElementType);
2772
LocalBuilder localA =
ilg
.GetLocal(source.Substring(0, index));
2773
ilg
.LdlocAddress(localA);
2781
System.Diagnostics.Debug.Assert(
ilg
.GetVariableType(
ilg
.GetVariable(match.Groups["a"].Value)).IsArray);
2782
ilg
.Load(
ilg
.GetVariable(match.Groups["a"].Value));
2783
ilg
.Load(
ilg
.GetVariable(match.Groups["ia"].Value));
2794
if (
ilg
.TryGetVariable(source, out variable)) {
2795
Type varType =
ilg
.GetVariableType(variable);
2797
ilg
.Call(varType.GetConstructor(varType.GetGenericArguments()));
2801
ilg
.ConvertValue(stackType, elementType);
2802
ilg
.ConvertValue(elementType, varType);
2803
ilg
.Stloc((LocalBuilder)variable);
2811
ilg
.ConvertValue(stackType, memInfo.MemberType == MemberTypes.Field ? ((FieldInfo)memInfo).FieldType : ((PropertyInfo)memInfo).PropertyType);
2812
ilg
.StoreMember(memInfo);
2819
object oVar =
ilg
.GetVariable(match.Groups["locA1"].Value);
2820
Type arrayElementType =
ilg
.GetVariableType(oVar).GetElementType();
2821
ilg
.ConvertValue(elementType, arrayElementType);
2823
ilg
.Stobj(arrayElementType);
2826
ilg
.Stelem(arrayElementType);
2833
LocalBuilder localA =
ilg
.GetLocal(source.Substring(0, index));
2844
ilg
.ConvertValue(stackType, addParameterType);
2845
ilg
.Call(Add);
2847
ilg
.Pop();
2854
Type varType =
ilg
.GetVariableType(
ilg
.GetVariable(match.Groups["a"].Value));
2857
ilg
.ConvertValue(stackType, varElementType);
2858
ilg
.Stelem(varElementType);
2872
ilg
.Ldarg(0);
2873
ilg
.Call(XmlSerializationReader_ReadNull);
2874
ilg
.IfNot();
2889
Label labelTrue =
ilg
.DefineLabel();
2890
Label labelEnd =
ilg
.DefineLabel();
2893
ilg
.Load(
ilg
.GetVariable(member.ArrayName));
2894
ilg
.Load(null);
2895
ilg
.Beq(labelTrue);
2913
ilg
.Ldarg(0);
2914
ilg
.Call(XmlSerializationReader_get_Reader);
2915
ilg
.Call(XmlReader_get_IsEmptyElement);
2917
ilg
.Br_S(labelEnd);
2918
ilg
.MarkLabel(labelTrue);
2919
ilg
.Ldc(true);
2920
ilg
.MarkLabel(labelEnd);
2922
ilg
.If();
2930
ilg
.Ldarg(0);
2931
ilg
.Call(XmlSerializationReader_get_Reader);
2932
ilg
.Call(XmlReader_Skip);
2933
ilg
.Else();
2942
ilg
.Ldarg(0);
2943
ilg
.Call(XmlSerializationReader_get_Reader);
2944
ilg
.Call(XmlReader_ReadStartElement);
2956
ilg
.Ldarg(0);
2957
ilg
.Call(XmlSerializationReader_get_Reader);
2958
ilg
.Call(XmlReader_MoveToContent);
2959
ilg
.Pop();
2969
ilg
.Ldarg(0);
2970
ilg
.Call(XmlSerializationReader_ReadEndElement);
2971
ilg
.EndIf();
2976
ilg
.Else();
2981
ilg
.EndIf();
2999
ilg
.Ldarg(0);
3000
ilg
.Ldc(true);
3008
ilg
.Call(methodBuilder);
3021
ilg
.Ldarg(0);
3022
ilg
.Call(XmlSerializationReader_ReadNull);
3023
ilg
.If();
3029
ilg
.Load(null);
3032
ilg
.Else();
3050
ilg
.Ldarg(0);
3051
ilg
.Call(XmlSerializationReader_get_Reader);
3052
ilg
.Call(XmlReader_get_IsEmptyElement);
3053
ilg
.If();
3061
ilg
.Ldarg(0);
3062
ilg
.Call(XmlSerializationReader_get_Reader);
3063
ilg
.Call(XmlReader_Skip);
3064
ilg
.Else();
3087
ilg
.Ldarg(0);
3088
ilg
.Call(XmlSerializationReader_get_Reader);
3089
ilg
.Call(XmlReader_get_IsEmptyElement);
3090
ilg
.If();
3099
ilg
.Ldarg(0);
3100
ilg
.Call(XmlSerializationReader_get_Reader);
3101
ilg
.Call(XmlReader_Skip);
3108
ilg
.Ldc(default(TimeSpan).Ticks);
3109
ilg
.New(TimeSpan_ctor);
3111
ilg
.Else();
3115
ilg
.EndIf();
3128
ilg
.Ldarg(0);
3129
ilg
.Call(XmlSerializationReader_ReadElementQualifiedName);
3148
ilg
.EndIf();
3173
ilg
.Ldloc(arrayName);
3174
ilg
.Load(null);
3175
ilg
.If(Cmp.EqualTo);
3176
ilg
.Ldarg(0);
3177
ilg
.Call(XmlSerializationReader_get_Reader);
3178
ilg
.Call(XmlReader_Skip);
3179
ilg
.Else();
3183
ilg
.Ldarg(0);
3185
ilg
.Load(element.IsNullable);
3188
ilg
.Ldc(true);
3196
ilg
.Call(methodBuilder);
3200
ilg
.EndIf();
3215
ilg
.Ldarg(0);
3216
ilg
.Ldc(element.Any ? false : true);
3217
ilg
.Call(XmlSerializationReader_ReadXmlXXX);
3220
ilg
.Castclass(special.TypeDesc.Type);
3234
Label labelTrue =
ilg
.DefineLabel();
3235
Label labelEnd =
ilg
.DefineLabel();
3236
LocalBuilder tserLoc =
ilg
.DeclareOrGetLocal(typeof(XmlQualifiedName), "tser");
3237
ilg
.Ldarg(0);
3238
ilg
.Call(XmlSerializationReader_GetXsiType);
3239
ilg
.Stloc(tserLoc);
3240
ilg
.Ldloc(tserLoc);
3241
ilg
.Load(null);
3242
ilg
.Ceq();
3243
ilg
.Brtrue(labelTrue);
3246
ilg
.Br_S(labelEnd);
3247
ilg
.MarkLabel(labelTrue);
3248
ilg
.Ldc(true);
3249
ilg
.MarkLabel(labelEnd);
3250
ilg
.If();
3261
ilg
.Ldarg(0);
3262
RaCodeGen.ILGenForCreateInstance(
ilg
, sm.TypeDesc.Type, sm.TypeDesc.CannotNew, false);
3264
ilg
.ConvertValue(typeof(object), typeof(IXmlSerializable));
3266
ilg
.Ldc(true);
3267
ilg
.Call(XmlSerializationReader_ReadSerializable);
3270
ilg
.ConvertValue(typeof(IXmlSerializable), sm.TypeDesc.Type);
3292
RaCodeGen.ILGenForEnumMember(
ilg
, choice.Mapping.TypeDesc.Type, choice.MemberIds[elementIndex]);
3301
Label labelTrue =
ilg
.DefineLabel();
3302
Label labelEnd =
ilg
.DefineLabel();
3303
LocalBuilder tserLoc =
ilg
.GetLocal("tser");
3304
ilg
.InitElseIf();
3305
ilg
.Ldloc(tserLoc);
3306
ilg
.Load(null);
3307
ilg
.Ceq();
3308
ilg
.Brtrue(labelTrue);
3311
ilg
.Br_S(labelEnd);
3312
ilg
.MarkLabel(labelTrue);
3313
ilg
.Ldc(true);
3314
ilg
.MarkLabel(labelEnd);
3315
ilg
.AndIf();
3327
ilg
.Ldarg(0);
3328
RaCodeGen.ILGenForCreateInstance(
ilg
, derived.TypeDesc.Type, derived.TypeDesc.CannotNew, false);
3330
ilg
.ConvertValue(typeof(object), typeof(IXmlSerializable));
3332
ilg
.Ldc(true);
3333
ilg
.Call(XmlSerializationReader_ReadSerializable);
3336
ilg
.ConvertValue(typeof(IXmlSerializable), head.TypeDesc.Type);
3347
ilg
.Ldarg(0);
3348
ilg
.Ldstr(derived.XsiType.Name);
3349
ilg
.Ldstr(derived.XsiType.Namespace);
3350
ilg
.Ldstr(head.XsiType.Name);
3351
ilg
.Ldstr(head.XsiType.Namespace);
3352
ilg
.Ldstr(derived.Type.FullName);
3353
ilg
.Ldstr(head.Type.FullName);
3354
ilg
.Call(XmlSerializationReader_CreateBadDerivationException);
3355
ilg
.Throw();
3366
ilg
.Ldarg(0);
3367
ilg
.Ldstr(derived.XsiType.Name);
3368
ilg
.Ldstr(derived.XsiType.Namespace);
3369
ilg
.Ldstr(head.Type.FullName);
3370
ilg
.Call(XmlSerializationReader_CreateMissingIXmlSerializableType);
3371
ilg
.Throw();
3394
ilg
.Ldarg(0);
3395
ilg
.Call(XmlSerializationReader_get_Reader);
3396
ilg
.Call(XmlReader_MoveToContent);
3397
ilg
.Pop();
3399
ilg
.WhileBegin();
3405
ilg
.WhileBeginCondition();
3425
Label labelFalse =
ilg
.DefineLabel();
3426
Label labelEnd =
ilg
.DefineLabel();
3427
ilg
.Ldarg(0);
3428
ilg
.Call(XmlSerializationReader_get_Reader);
3429
ilg
.Call(XmlReader_get_NodeType);
3430
ilg
.Ldc(XmlNodeType_EndElement);
3431
ilg
.Beq(labelFalse);
3432
ilg
.Ldarg(0);
3433
ilg
.Call(XmlSerializationReader_get_Reader);
3434
ilg
.Call(XmlReader_get_NodeType);
3435
ilg
.Ldc(XmlNodeType_None);
3436
ilg
.Cne();
3437
ilg
.Br_S(labelEnd);
3438
ilg
.MarkLabel(labelFalse);
3439
ilg
.Ldc(false);
3440
ilg
.MarkLabel(labelEnd);
3442
ilg
.WhileEndCondition();
3443
ilg
.WhileEnd();
3454
ilg
.Ldc(0);
3455
ilg
.Stloc(typeof(Int32), String.Format(CultureInfo.InvariantCulture, "whileIterations{0}", nextWhileLoopIndex));
3456
ilg
.Ldarg(0);
3457
ilg
.Call(XmlSerializationReader_get_ReaderCount);
3458
ilg
.Stloc(typeof(Int32), String.Format(CultureInfo.InvariantCulture, "readerCount{0}", nextWhileLoopIndex));
3471
ilg
.Ldarg(0);
3472
ilg
.Ldloca(
ilg
.GetLocal(String.Format(CultureInfo.InvariantCulture, "whileIterations{0}", loopIndex)));
3473
ilg
.Ldloca(
ilg
.GetLocal(String.Format(CultureInfo.InvariantCulture, "readerCount{0}", loopIndex)));
3474
ilg
.Call(XmlSerializationReader_CheckReaderCount);
3478
LocalBuilder paramsRead =
ilg
.DeclareLocal(typeof(Boolean[]), "paramsRead");
3479
ilg
.NewArray(typeof(Boolean), length);
3480
ilg
.Stloc(paramsRead);
3487
LocalBuilder loc =
ilg
.DeclareLocal(
3492
ilg
.BeginExceptionBlock();
3494
RaCodeGen.ILGenForCreateInstance(
ilg
, mapping.TypeDesc.Type, mapping.TypeDesc.CannotNew, true);
3495
ilg
.Stloc(loc);
3497
ilg
.Leave();
3506
ilg
.Ldarg(0);
3507
ilg
.Ldstr(fullTypeName);
3508
ilg
.Call(XmlSerializationReader_CreateInaccessibleConstructorException);
3509
ilg
.Throw();
3519
ilg
.Ldarg(0);
3520
ilg
.Ldstr(fullTypeName);
3521
ilg
.Call(XmlSerializationReader_CreateCtorHasSecurityException);
3522
ilg
.Throw();
3524
ilg
.EndExceptionBlock();
3529
ilg
.BeginCatchBlock(exceptionType);
3530
ilg
.Pop();
3542
ilg
.Ldarg(0);
3543
ilg
.Ldc(typeDesc.Type);
3554
object idsLoc =
ilg
.GetVariable("ids");
3555
ilg
.Ldarg(0);
3557
ilg
.LoadArrayElement(idsLoc, Int32.Parse(source.Substring(14, source.Length - 16), CultureInfo.InvariantCulture));
3558
ilg
.Call(XmlSerializationReader_GetTarget);
3561
ilg
.Load(
ilg
.GetVariable(source));
3565
ilg
.Load(null);
3569
object idsLoc =
ilg
.GetVariable("ids");
3571
ilg
.LoadArrayElement(idsLoc, Int32.Parse(id.Substring(4, id.Length - 5), CultureInfo.InvariantCulture));
3574
object idVar =
ilg
.GetVariable(id);
3575
ilg
.Load(idVar);
3576
ilg
.ConvertValue(
ilg
.GetVariableType(idVar), typeof(string));
3579
ilg
.Call(XmlSerializationReader_CreateInvalidCastException);
3580
ilg
.Throw();
3583
RaCodeGen.WriteArrayLocalDecl(typeName, variableName, new SourceInfo(initValue, initValue, null, arrayTypeDesc.Type,
ilg
), arrayTypeDesc);
3586
RaCodeGen.WriteCreateInstance(source, ctorInaccessible, type,
ilg
);
3610
ilg
.Ldarg(0);
3611
ilg
.Load(null);
3612
ilg
.Ldstr(match.Groups["qnames"].Value);
3613
ilg
.Call(XmlSerializationReader_UnknownNode2);
3620
ilg
.Ldarg(0);
3621
LocalBuilder localO =
ilg
.GetLocal(match.Groups["o"].Value);
3622
ilg
.Ldloc(localO);
3623
ilg
.ConvertValue(localO.LocalType, typeof(object));
3624
ilg
.Ldstr(match.Groups["qnames"].Value);
3625
ilg
.Call(XmlSerializationReader_UnknownNode2);
3632
ilg
.Ldarg(0);
3633
LocalBuilder localO =
ilg
.GetLocal(match.Groups["o"].Value);
3634
ilg
.Ldloc(localO);
3635
ilg
.ConvertValue(localO.LocalType, typeof(object));
3636
ilg
.Load(null);
3637
ilg
.Call(XmlSerializationReader_UnknownNode2);
3644
ilg
.Ldarg(0);
3645
LocalBuilder localO =
ilg
.GetLocal(match.Groups["o"].Value);
3646
ilg
.Ldloc(localO);
3647
ilg
.ConvertValue(localO.LocalType, typeof(object));
3648
ilg
.Call(XmlSerializationReader_UnknownNode1);
3657
ilg
.LoadArrayElement(
ilg
.GetLocal("paramsRead"), Int32.Parse(match.Groups["index"].Value, CultureInfo.InvariantCulture));
3666
ilg
.StoreArrayElement(
ilg
.GetLocal("paramsRead"), Int32.Parse(match.Groups["index"].Value, CultureInfo.InvariantCulture), value);
3680
ilg
.Ldarg(0);
3681
ilg
.Call(XmlSerializationReader_CreateUnknownNodeException);
3682
ilg
.Throw();
3693
ilg
.Load(value);
System\Xml\Serialization\XmlSerializationWriterILGen.cs (591)
79
ilg
.BeginMethod(typeof(void), "InitCallbacks", CodeGenerator.EmptyTypeArray, CodeGenerator.EmptyStringArray,
81
ilg
.EndMethod();
90
ilg
.Ldarg(0);
91
ilg
.Ldstr(name);
94
ilg
.Ldstr(ns);
107
ilg
.Call(XmlSerializationWriter_WriteXXX);
129
ilg
.Ldarg(0);
131
ilg
.Call(methodBuilder);
151
ilg
.Call(XmlConvert_ToString);
159
ilg
.Ldarg(0);
169
ilg
.Call(FromXXX);
200
ilg
.Ldc(Enum.Parse(mapping.TypeDesc.Type, enumDefaultValue, false));
201
ilg
.If(Cmp.NotEqualTo); // " != "
208
ilg
.Ldarg(0);
210
ilg
.Ldstr(name);
213
ilg
.Ldstr(ns);
234
ilg
.Ldstr(mapping.TypeName);
235
ilg
.Ldstr(mapping.Namespace);
236
ilg
.New(XmlQualifiedName_ctor);
246
ilg
.Call(XmlSerializationWriter_method);
249
ilg
.EndIf();
261
ilg
.Ldarg(0);
262
ilg
.Ldstr(name);
263
ilg
.Ldstr(ns);
264
ilg
.Call(XmlSerializationWriter_Method);
275
ilg
.Ldarg(0);
276
ilg
.Ldstr(name);
277
ilg
.Ldstr(ns);
278
ilg
.Load(null);
279
ilg
.Ldc(writePrefixed);
280
ilg
.Call(XmlSerializationWriter_Method);
295
ilg
.Ldarg(0);
296
ilg
.Call(XmlSerializationWriter_WriteEndElement);
306
object oVar =
ilg
.GetVariable(source);
307
ilg
.Ldarg(0);
308
ilg
.Load(oVar);
309
ilg
.ConvertValue(
ilg
.GetVariableType(oVar), typeof(Object));
310
ilg
.Call(XmlSerializationWriter_WriteEndElement);
328
ilg
.BeginMethod(
343
ilg
.Ldarg(0);
344
ilg
.Call(XmlSerializationWriter_WriteStartDocument);
353
ilg
.Ldarg(0);
354
ilg
.Call(XmlSerializationWriter_TopLevelElement);
359
LocalBuilder pLengthLoc =
ilg
.DeclareLocal(typeof(int), "pLength");
360
ilg
.Ldarg("p");
361
ilg
.Ldlen();
362
ilg
.Stloc(pLengthLoc);
372
ilg
.Ldloc(pLengthLoc);
373
ilg
.Ldc(xmlnsMember);
374
ilg
.If(Cmp.GreaterThan);
376
ilg
.EndIf();
383
SourceInfo source = new SourceInfo("p[" + i.ToString(CultureInfo.InvariantCulture) + "]", null, null, pLengthLoc.LocalType.GetElementType(),
ilg
);
391
specifiedSource = new SourceInfo("((bool)p[" + j.ToString(CultureInfo.InvariantCulture) + "])", null, null, typeof(bool),
ilg
);
398
ilg
.Ldloc(pLengthLoc);
399
ilg
.Ldc(i);
400
ilg
.If(Cmp.GreaterThan);
403
Label labelTrue =
ilg
.DefineLabel();
404
Label labelEnd =
ilg
.DefineLabel();
405
ilg
.Ldloc(pLengthLoc);
406
ilg
.Ldc(specifiedPosition);
407
ilg
.Ble(labelTrue);
409
ilg
.Br_S(labelEnd);
410
ilg
.MarkLabel(labelTrue);
411
ilg
.Ldc(true);
412
ilg
.MarkLabel(labelEnd);
413
ilg
.If();
419
ilg
.EndIf();
422
ilg
.EndIf();
441
specifiedSource = new SourceInfo("((bool)p[" + j.ToString(CultureInfo.InvariantCulture) + "])", null, null, typeof(bool),
ilg
);
448
ilg
.Ldloc(pLengthLoc);
449
ilg
.Ldc(i);
450
ilg
.If(Cmp.GreaterThan);
453
Label labelTrue =
ilg
.DefineLabel();
454
Label labelEnd =
ilg
.DefineLabel();
455
ilg
.Ldloc(pLengthLoc);
456
ilg
.Ldc(specifiedPosition);
457
ilg
.Ble(labelTrue);
459
ilg
.Br_S(labelEnd);
460
ilg
.MarkLabel(labelTrue);
461
ilg
.Ldc(true);
462
ilg
.MarkLabel(labelEnd);
463
ilg
.If();
484
WriteMember(new SourceInfo(source, source, null, null,
ilg
), enumSource, member.ElementsSortedByDerivation, member.Text, member.ChoiceIdentifier, member.TypeDesc, writeAccessors || hasWrapperElement);
487
ilg
.EndIf();
490
ilg
.EndIf();
496
ilg
.EndMethod();
505
ilg
.BeginMethod(
520
ilg
.Ldarg(0);
521
ilg
.Call(XmlSerializationWriter_WriteStartDocument);
523
ilg
.If(
ilg
.GetArg("o"), Cmp.EqualTo, null);
529
ilg
.GotoMethodEnd();
530
ilg
.EndIf();
540
ilg
.Ldarg(0);
541
ilg
.Call(XmlSerializationWriter_TopLevelElement);
544
WriteMember(new SourceInfo("o", "o", null, typeof(object),
ilg
), null, new ElementAccessor[] { element }, null, null, mapping.TypeDesc, true);
546
ilg
.EndMethod();
561
ilg
.BeginMethod(
567
LocalBuilder sLoc =
ilg
.DeclareLocal(typeof(string), "s");
568
ilg
.Load(null);
569
ilg
.Stloc(sLoc);
576
Label defaultLabel =
ilg
.DefineLabel();
577
Label endSwitchLabel =
ilg
.DefineLabel();
579
LocalBuilder localTmp =
ilg
.DeclareLocal(mapping.TypeDesc.Type, "localTmp");
580
ilg
.Ldarg("v");
581
ilg
.Stloc(localTmp);
585
Label caseLabel =
ilg
.DefineLabel();
586
ilg
.Ldloc(localTmp);
587
ilg
.Ldc(Enum.ToObject(mapping.TypeDesc.Type, c.Value));
588
ilg
.Beq(caseLabel);
597
ilg
.Br(defaultLabel);
599
ilg
.MarkLabel(caseLabels[i]);
600
ilg
.Ldc(retValues[i]);
601
ilg
.Stloc(sLoc);
602
ilg
.Br(endSwitchLabel);
604
ilg
.MarkLabel(defaultLabel);
605
RaCodeGen.ILGenForEnumLongValue(
ilg
, "v");
606
LocalBuilder strArray =
ilg
.DeclareLocal(typeof(String[]), "strArray");
607
ilg
.NewArray(typeof(String), constants.Length);
608
ilg
.Stloc(strArray);
611
ilg
.Ldloc(strArray);
612
ilg
.Ldc(i);
613
ilg
.Ldstr(c.XmlName);
614
ilg
.Stelem(typeof(String));
616
ilg
.Ldloc(strArray);
617
LocalBuilder longArray =
ilg
.DeclareLocal(typeof(long[]), "longArray");
618
ilg
.NewArray(typeof(long), constants.Length);
619
ilg
.Stloc(longArray);
623
ilg
.Ldloc(longArray);
624
ilg
.Ldc(i);
625
ilg
.Ldc(c.Value);
626
ilg
.Stelem(typeof(long));
628
ilg
.Ldloc(longArray);
629
ilg
.Ldstr(mapping.TypeDesc.FullName);
637
ilg
.Call(XmlSerializationWriter_FromEnum);
638
ilg
.Stloc(sLoc);
639
ilg
.Br(endSwitchLabel);
642
ilg
.Br(defaultLabel);
645
ilg
.MarkLabel(caseLabels[i]);
646
ilg
.Ldc(retValues[i]);
647
ilg
.Stloc(sLoc);
648
ilg
.Br(endSwitchLabel);
672
ilg
.MarkLabel(defaultLabel);
673
ilg
.Ldarg(0);
674
ilg
.Ldarg("v");
675
ilg
.ConvertValue(mapping.TypeDesc.Type, typeof(Int64));
676
LocalBuilder numLoc =
ilg
.DeclareLocal(typeof(Int64), "num");
677
ilg
.Stloc(numLoc);
679
ilg
.LdlocAddress(numLoc);
680
ilg
.Call(CultureInfo_get_InvariantCulture);
681
ilg
.Call(Int64_ToString);
682
ilg
.Ldstr(mapping.TypeDesc.FullName);
683
ilg
.Call(XmlSerializationWriter_CreateInvalidEnumValueException);
684
ilg
.Throw();
686
ilg
.MarkLabel(endSwitchLabel);
688
ilg
.Ldloc(sLoc);
689
ilg
.EndMethod();
694
ilg
.InitElseIf();
696
ilg
.AndIf();
706
ilg
.Ldarg(0);
708
ilg
.Ldarg("n");
710
ilg
.Ldarg("ns");
711
object oVar =
ilg
.GetVariable("o");
712
Type oType =
ilg
.GetVariableType(oVar);
713
ilg
.Load(oVar);
714
ilg
.ConvertValue(oType, derived.TypeDesc.Type);
718
ilg
.Ldarg("isNullable");
721
ilg
.Ldc(true);
727
ilg
.Call(methodBuilder);
728
ilg
.GotoMethodEnd();
739
ilg
.InitElseIf();
742
ilg
.AndIf();
764
ilg
.Ldarg(0);
765
ilg
.Call(XmlSerializationWriter_get_Writer);
766
ilg
.Ldarg("n");
767
ilg
.Ldarg("ns");
768
ilg
.Call(XmlWriter_WriteStartElement);
776
ilg
.Ldarg(0);
777
ilg
.Ldstr(mapping.TypeName);
778
ilg
.Ldstr(mapping.Namespace);
779
ilg
.Call(XmlSerializationWriter_WriteXsiType);
793
ilg
.Ldarg(0);
794
ilg
.Call(XmlSerializationWriter_get_Writer);
795
object oVar =
ilg
.GetVariable("o");
796
ilg
.Ldarg(0);
797
ilg
.Load(oVar);
798
ilg
.ConvertValue(
ilg
.GetVariableType(oVar), mapping.TypeDesc.Type);
799
ilg
.Call(methodBuilder);
800
ilg
.Call(XmlWriter_WriteString);
808
ilg
.Ldarg(0);
809
ilg
.Call(XmlSerializationWriter_get_Writer);
810
ilg
.Call(XmlWriter_WriteEndElement);
811
ilg
.GotoMethodEnd();
816
ilg
.InitElseIf();
822
ilg
.AndIf();
823
ilg
.EnterScope();
839
ilg
.Ldarg(0);
840
ilg
.Call(XmlSerializationWriter_get_Writer);
841
ilg
.Ldarg("n");
842
ilg
.Ldarg("ns");
843
ilg
.Call(XmlWriter_WriteStartElement);
851
ilg
.Ldarg(0);
852
ilg
.Ldstr(mapping.TypeName);
853
ilg
.Ldstr(mapping.Namespace);
854
ilg
.Call(XmlSerializationWriter_WriteXsiType);
856
WriteMember(new SourceInfo("o", "o", null, null,
ilg
), null, mapping.ElementsSortedByDerivation, null, null, mapping.TypeDesc, true);
865
ilg
.Ldarg(0);
866
ilg
.Call(XmlSerializationWriter_get_Writer);
867
ilg
.Call(XmlWriter_WriteEndElement);
868
ilg
.GotoMethodEnd();
869
ilg
.ExitScope();
893
ilg
.BeginMethod(typeof(void),
899
ilg
.If(
ilg
.GetArg("o"), Cmp.EqualTo, null);
901
ilg
.If(
ilg
.GetArg("isNullable"), Cmp.EqualTo, true);
910
ilg
.Ldarg(0);
911
ilg
.Ldarg("n");
912
ilg
.Ldarg("ns");
913
ilg
.Call(XmlSerializationWriter_WriteNullTagLiteral);
915
ilg
.EndIf();
916
ilg
.GotoMethodEnd();
918
ilg
.EndIf();
920
ilg
.If(
ilg
.GetArg("needType"), Cmp.NotEqualTo, true); // if (!needType)
922
LocalBuilder tLoc =
ilg
.DeclareLocal(typeof(Type), "t");
930
ArgBuilder oArg =
ilg
.GetArg("o");
931
ilg
.LdargAddress(oArg);
932
ilg
.ConvertAddress(oArg.ArgType, typeof(object));
933
ilg
.Call(Object_GetType);
934
ilg
.Stloc(tLoc);
937
ilg
.If(); // if (t == typeof(...))
941
ilg
.Else();
950
ilg
.Ldarg(0);
951
ilg
.Ldarg("n");
952
ilg
.Ldarg("ns");
953
ilg
.Ldarg("o");
954
ilg
.Ldc(true);
955
ilg
.Call(XmlSerializationWriter_WriteTypedPrimitive);
956
ilg
.GotoMethodEnd();
966
ilg
.Ldarg(0);
967
ilg
.Ldarg(oArg);
968
ilg
.ConvertValue(oArg.ArgType, typeof(Object));
969
ilg
.Call(XmlSerializationWriter_CreateUnknownTypeException);
970
ilg
.Throw();
972
ilg
.EndIf(); // if (t == typeof(...))
973
ilg
.EndIf(); // if (!needType)
984
ilg
.Ldarg(0);
985
ilg
.Ldc(false);
986
ilg
.Call(XmlSerializationWriter_set_EscapeName);
998
ilg
.Ldarg(0);
999
ilg
.Ldarg("n");
1000
ilg
.Ldarg("ns");
1001
ArgBuilder argO =
ilg
.GetArg("o");
1002
ilg
.Ldarg(argO);
1003
ilg
.ConvertValue(argO.ArgType, typeof(Object));
1004
ilg
.Ldc(false);
1006
ilg
.Load(null);
1019
ilg
.Call(XmlSerializationWriter_WriteStartElement);
1021
ilg
.If(
ilg
.GetArg("needType"), Cmp.EqualTo, true);
1030
ilg
.Ldarg(0);
1031
ilg
.Ldstr(mapping.TypeName);
1032
ilg
.Ldstr(mapping.Namespace);
1033
ilg
.Call(XmlSerializationWriter_WriteXsiType);
1035
ilg
.EndIf();
1042
ilg
.LdargAddress(oArg);
1043
ilg
.Call(m.CheckShouldPersistMethodInfo);
1044
ilg
.If();
1049
ilg
.If();
1051
WriteMember(RaCodeGen.GetSourceForMember("o", m, mapping.TypeDesc,
ilg
), m.Attribute, m.TypeDesc, "o");
1054
ilg
.EndIf();
1057
ilg
.EndIf();
1070
ilg
.LdargAddress(oArg);
1071
ilg
.Call(m.CheckShouldPersistMethodInfo);
1072
ilg
.If();
1077
ilg
.If();
1086
WriteMember(RaCodeGen.GetSourceForMember("o", m, m.MemberInfo, mapping.TypeDesc,
ilg
), choiceSource, m.ElementsSortedByDerivation, m.Text, m.ChoiceIdentifier, m.TypeDesc, true);
1090
ilg
.EndIf();
1093
ilg
.EndIf();
1098
ilg
.EndMethod();
1119
ilg
.Ldloc(memberTypeDesc.Type, aVar);
1120
ilg
.Load(null);
1121
ilg
.If(Cmp.NotEqualTo);
1140
ilg
.Ldarg(0);
1141
ilg
.Call(XmlSerializationWriter_get_Writer);
1142
ilg
.Load(null);
1143
ilg
.Ldstr(attribute.Name);
1144
ilg
.Ldstr(ns);
1145
ilg
.Call(XmlWriter_WriteStartAttribute);
1148
LocalBuilder sbLoc =
ilg
.DeclareOrGetLocal(typeof(StringBuilder), "sb");
1155
ilg
.New(StringBuilder_ctor);
1156
ilg
.Stloc(sbLoc);
1166
LocalBuilder localI =
ilg
.DeclareOrGetLocal(typeof(Int32), iVar);
1167
ilg
.For(localI, 0,
ilg
.GetLocal(aVar));
1170
LocalBuilder localI =
ilg
.DeclareOrGetLocal(typeof(Int32), iVar);
1171
ilg
.For(localI, 0,
ilg
.GetLocal(aVar));
1181
ilg
.Ldloc(iVar);
1182
ilg
.Ldc(0);
1183
ilg
.If(Cmp.NotEqualTo);
1198
ilg
.Ldarg(0);
1199
ilg
.Call(XmlSerializationWriter_get_Writer);
1200
ilg
.Ldstr(" ");
1201
ilg
.Call(XmlWriter_WriteString);
1202
ilg
.EndIf();
1203
ilg
.Ldarg(0);
1215
ilg
.Ldloc(iVar);
1216
ilg
.Ldc(0);
1217
ilg
.If(Cmp.NotEqualTo);
1218
ilg
.Ldloc("sb");
1219
ilg
.Ldstr(" ");
1220
ilg
.Call(StringBuilder_Append);
1221
ilg
.Pop();
1222
ilg
.EndIf();
1223
ilg
.Ldloc("sb");
1228
WriteEnumValue((EnumMapping)attribute.Mapping, new SourceInfo(aiVar, aiVar, null, arrayElementTypeDesc.Type,
ilg
), out argType);
1230
WritePrimitiveValue(arrayElementTypeDesc, new SourceInfo(aiVar, aiVar, null, arrayElementTypeDesc.Type,
ilg
), out argType);
1238
ilg
.Call(method);
1240
ilg
.Pop();
1243
WriteAttribute(new SourceInfo(aiVar, aiVar, null, null,
ilg
), attribute, parent);
1248
ilg
.EndFor();
1266
ilg
.Ldarg(0);
1267
ilg
.Call(XmlSerializationWriter_get_Writer);
1268
ilg
.Call(XmlWriter_WriteEndAttribute);
1278
ilg
.Ldloc("sb");
1279
ilg
.Call(StringBuilder_get_Length);
1280
ilg
.Ldc(0);
1281
ilg
.If(Cmp.NotEqualTo);
1284
ilg
.Ldarg(0);
1285
ilg
.Ldstr(attribute.Name);
1289
ilg
.Ldstr(ns);
1299
ilg
.Ldloc("sb");
1300
ilg
.Call(Object_ToString);
1309
ilg
.Call(XmlSerializationWriter_WriteAttribute);
1310
ilg
.EndIf();
1315
ilg
.EndIf();
1335
ilg
.Ldarg(0);
1336
ilg
.Ldloc(source.Source);
1337
ilg
.Ldarg(parent);
1338
ilg
.ConvertValue(
ilg
.GetArg(parent).ArgType, typeof(Object));
1339
ilg
.Call(XmlSerializationWriter_WriteXmlAttribute);
1379
LocalBuilder aLoc =
ilg
.GetLocal(aName);
1381
ilg
.Ldloc(aLoc);
1382
ilg
.Load(null);
1383
ilg
.If(Cmp.NotEqualTo);
1389
SourceInfo choiceSourceInfo = new SourceInfo(choiceSource, null, choice.MemberInfo, null,
ilg
);
1393
Label labelEnd =
ilg
.DefineLabel();
1394
Label labelTrue =
ilg
.DefineLabel();
1395
LocalBuilder cLoc =
ilg
.GetLocal(cName);
1396
ilg
.Ldloc(cLoc);
1397
ilg
.Load(null);
1398
ilg
.Beq(labelTrue);
1399
ilg
.Ldloc(cLoc);
1400
ilg
.Ldlen();
1401
ilg
.Ldloc(aLoc);
1402
ilg
.Ldlen();
1403
ilg
.Clt();
1404
ilg
.Br(labelEnd);
1405
ilg
.MarkLabel(labelTrue);
1406
ilg
.Ldc(true);
1407
ilg
.MarkLabel(labelEnd);
1408
ilg
.If();
1416
ilg
.Ldarg(0);
1417
ilg
.Ldstr(choice.Mapping.TypeDesc.FullName);
1418
ilg
.Ldstr(choice.MemberName);
1419
ilg
.Call(XmlSerializationWriter_CreateInvalidChoiceIdentifierValueException);
1420
ilg
.Throw();
1421
ilg
.EndIf();
1426
ilg
.EndIf();
1440
LocalBuilder eLoc =
ilg
.DeclareLocal(typeof(IEnumerator), "e");
1451
ilg
.LoadAddress(
ilg
.GetVariable(arrayName));
1455
ilg
.Load(
ilg
.GetVariable(arrayName));
1465
ilg
.ConvertValue(arrayTypeDesc.Type, typeIEnumerable);
1468
ilg
.Call(getEnumeratorMethod);
1469
ilg
.ConvertValue(getEnumeratorMethod.ReturnType, typeof(IEnumerator));
1470
ilg
.Stloc(eLoc);
1472
ilg
.Ldloc(eLoc);
1473
ilg
.Load(null);
1474
ilg
.If(Cmp.NotEqualTo);
1475
ilg
.WhileBegin();
1479
WriteElements(new SourceInfo(arrayNamePlusI, null, null, arrayElementTypeDesc.Type,
ilg
), choiceName + "i", elements, text, choice, arrayNamePlusA, true, true);
1481
ilg
.WhileBeginCondition(); // while (e.MoveNext())
1489
ilg
.Ldloc(eLoc);
1490
ilg
.Call(IEnumerator_MoveNext);
1491
ilg
.WhileEndCondition();
1492
ilg
.WhileEnd();
1494
ilg
.EndIf(); // if (e != null)
1501
LocalBuilder localI =
ilg
.DeclareOrGetLocal(typeof(Int32), iPlusArrayName);
1502
ilg
.For(localI, 0,
ilg
.GetLocal(arrayName));
1509
WriteElements(new SourceInfo(arrayNamePlusI, null, null, arrayElementTypeDesc.Type,
ilg
), choiceName + "i", elements, text, choice, arrayNamePlusA, true, arrayElementTypeDesc.IsNullable);
1512
WriteElements(new SourceInfo(RaCodeGen.GetStringForArrayMember(arrayName, iPlusArrayName, arrayTypeDesc), null, null, arrayElementTypeDesc.Type,
ilg
), null, elements, text, choice, arrayNamePlusA, true, arrayElementTypeDesc.IsNullable);
1514
ilg
.EndFor();
1530
ilg
.Load(null);
1531
ilg
.If(Cmp.NotEqualTo);
1555
if (wroteFirstIf)
ilg
.InitElseIf();
1556
else { wroteFirstIf = true;
ilg
.InitIf(); }
1558
ilg
.Load(enumValue);
1559
ilg
.Ceq();
1561
Label labelFalse =
ilg
.DefineLabel();
1562
Label labelEnd =
ilg
.DefineLabel();
1563
ilg
.Brfalse(labelFalse);
1565
ilg
.Load(null);
1566
ilg
.Cne();
1567
ilg
.Br_S(labelEnd);
1568
ilg
.MarkLabel(labelFalse);
1569
ilg
.Ldc(false);
1570
ilg
.MarkLabel(labelEnd);
1572
ilg
.AndIf();
1583
if (wroteFirstIf)
ilg
.InitElseIf();
1584
else { wroteFirstIf = true;
ilg
.InitIf(); }
1587
ilg
.AndIf();
1598
else
ilg
.EndIf();
1602
if (elements.Length - anyCount > 0)
ilg
.InitElseIf();
1603
else
ilg
.InitIf();
1608
ilg
.IsInst(typeof(XmlElement));
1609
ilg
.Load(null);
1610
ilg
.Cne();
1611
ilg
.AndIf();
1613
LocalBuilder elemLoc =
ilg
.DeclareLocal(typeof(XmlElement), "elem");
1615
ilg
.Stloc(elemLoc);
1620
if (c++ > 0)
ilg
.InitElseIf();
1621
else
ilg
.InitIf();
1629
labelFalse =
ilg
.DefineLabel();
1630
labelEnd =
ilg
.DefineLabel();
1632
ilg
.Load(enumValue);
1633
ilg
.Bne(labelFalse);
1636
ilg
.Load(null);
1637
ilg
.Cne();
1640
ilg
.Ldc(true);
1642
ilg
.Br(labelEnd);
1643
ilg
.MarkLabel(labelFalse);
1644
ilg
.Ldc(false);
1645
ilg
.MarkLabel(labelEnd);
1646
ilg
.AndIf();
1648
labelFalse =
ilg
.DefineLabel();
1649
labelEnd =
ilg
.DefineLabel();
1664
ilg
.Ldloc(elemLoc);
1665
ilg
.Call(XmlNode_get_Name);
1666
ilg
.Ldstr(element.Name);
1674
ilg
.Call(String_op_Equality);
1675
ilg
.Brfalse(labelFalse);
1676
ilg
.Ldloc(elemLoc);
1677
ilg
.Call(XmlNode_get_NamespaceURI);
1678
ilg
.Ldstr(element.Namespace);
1679
ilg
.Call(String_op_Equality);
1680
ilg
.Br(labelEnd);
1681
ilg
.MarkLabel(labelFalse);
1682
ilg
.Ldc(false);
1683
ilg
.MarkLabel(labelEnd);
1684
if (choice != null)
ilg
.If();
1685
else
ilg
.AndIf();
1686
WriteElement(new SourceInfo("elem", null, null, elemLoc.LocalType,
ilg
), element, arrayName, writeAccessors);
1689
ilg
.Else();
1698
ilg
.Ldarg(0);
1699
ilg
.Ldstr(enumFullName);
1700
ilg
.Ldstr(choice.MemberName);
1701
ilg
.Ldloc(elemLoc);
1702
ilg
.Call(XmlNode_get_Name);
1703
ilg
.Ldloc(elemLoc);
1704
ilg
.Call(XmlNode_get_NamespaceURI);
1705
ilg
.Call(XmlSerializationWriter_CreateChoiceIdentifierValueException);
1706
ilg
.Throw();
1707
ilg
.EndIf();
1711
ilg
.Else();
1714
WriteElement(new SourceInfo("elem", null, null, elemLoc.LocalType,
ilg
), unnamedAny, arrayName, writeAccessors);
1724
ilg
.Ldarg(0);
1725
ilg
.Ldloc(elemLoc);
1740
ilg
.Call(XmlNode_get_Name);
1741
ilg
.Ldloc(elemLoc);
1742
ilg
.Call(XmlNode_get_NamespaceURI);
1743
ilg
.Call(XmlSerializationWriter_CreateUnknownAnyElementException);
1744
ilg
.Throw();
1747
ilg
.EndIf();
1753
ilg
.InitElseIf();
1755
ilg
.AndIf();
1767
ilg
.InitElseIf();
1769
ilg
.Load(null);
1770
ilg
.AndIf(Cmp.NotEqualTo);
1773
ilg
.Else();
1783
ilg
.Ldarg(0);
1785
ilg
.Call(XmlSerializationWriter_CreateUnknownTypeException);
1786
ilg
.Throw();
1788
ilg
.EndIf();
1792
ilg
.EndIf();
1800
ilg
.Ldarg(0);
1814
ilg
.Call(XmlSerializationWriter_WriteValue);
1835
ilg
.Ldarg(0);
1836
ilg
.Call(XmlSerializationWriter_get_Writer);
1837
ilg
.Call(WriteTo);
1858
ilg
.Call(Nullable_get_HasValue);
1862
ilg
.Load(null);
1863
ilg
.Cne();
1865
ilg
.If();
1872
ilg
.Else();
1875
ilg
.EndIf();
1883
ilg
.EnterScope();
1891
ilg
.Ldloc(
ilg
.GetLocal(arrayName));
1892
ilg
.Load(null);
1893
ilg
.If(Cmp.NotEqualTo);
1900
ilg
.EndIf();
1904
ilg
.EndIf();
1907
ilg
.ExitScope();
1933
ilg
.Ldarg(0);
1934
ilg
.Ldstr(name);
1936
ilg
.Ldstr(ns);
1941
ilg
.Ldc(element.IsNullable);
1944
ilg
.Ldc(false);
1951
ilg
.Call(methodBuilder);
1964
Label ifLabel1 =
ilg
.DefineLabel();
1965
Label ifLabel2 =
ilg
.DefineLabel();
1967
ilg
.IsInst(typeof(XmlNode));
1968
ilg
.Brtrue(ifLabel1);
1970
ilg
.Load(null);
1971
ilg
.Ceq();
1972
ilg
.Br(ifLabel2);
1973
ilg
.MarkLabel(ifLabel1);
1974
ilg
.Ldc(true);
1975
ilg
.MarkLabel(ifLabel2);
1976
ilg
.If();
1980
ilg
.Else();
1989
ilg
.Ldarg(0);
1991
ilg
.Call(XmlSerializationWriter_CreateInvalidAnyTypeException);
1992
ilg
.Throw();
1994
ilg
.EndIf();
2010
ilg
.Ldarg(0);
2012
ilg
.Ldstr(name);
2013
ilg
.Ldstr(ns);
2014
ilg
.Ldc(isNullable);
2015
ilg
.Ldc(isAny);
2016
ilg
.Call(XmlSerializationWriter_func);
2023
Label labelEnd =
ilg
.DefineLabel();
2024
Label labelFalse =
ilg
.DefineLabel();
2025
Label labelTrue =
ilg
.DefineLabel();
2029
ilg
.Brfalse(labelTrue);
2032
ilg
.Brfalse(labelFalse);
2041
ilg
.Call(String_get_Length);
2042
ilg
.Ldc(0);
2043
ilg
.Cne();
2044
ilg
.Br(labelEnd);
2046
ilg
.MarkLabel(labelTrue);
2047
ilg
.Ldc(true);
2050
ilg
.MarkLabel(labelFalse);
2051
ilg
.Ldc(false);
2053
ilg
.MarkLabel(labelEnd);
2054
ilg
.If();
2059
ilg
.Load(null);
2060
ilg
.Cne();
2064
ilg
.Ldc(Convert.ChangeType(value, source.Type, CultureInfo.InvariantCulture));
2065
ilg
.Cne();
2070
ilg
.Ldc(value);
2079
ilg
.Call(op_Inequality);
2081
ilg
.Cne();
2083
ilg
.If();
2089
Label labelFalse =
ilg
.DefineLabel();
2090
Label labelEnd =
ilg
.DefineLabel();
2092
ilg
.Load(null);
2093
ilg
.Beq(labelFalse);
2096
ilg
.Ldc(false);
2097
ilg
.Ceq();
2098
ilg
.Br(labelEnd);
2099
ilg
.MarkLabel(labelFalse);
2100
ilg
.Ldc(false);
2101
ilg
.MarkLabel(labelEnd);
2102
ilg
.If();
2110
ilg
.Ldarg(0);
2111
ilg
.Ldstr(typeDesc.FullName);
2112
ilg
.Ldstr(choice.MemberName);
2113
ilg
.Ldstr(enumName);
2114
ilg
.Call(XmlSerializationWriter_CreateMismatchChoiceException);
2115
ilg
.Throw();
2116
ilg
.EndIf();
2120
LocalBuilder local =
ilg
.GetLocal(source);
2122
ilg
.Load(local);
2123
ilg
.Load(null);
2124
ilg
.If(Cmp.EqualTo);
2126
ilg
.Else();
2138
ilg
.Ldarg(0);
2140
ilg
.Call(XmlSerializationWriter_WriteNamespaceDeclarations);
2154
RaCodeGen.WriteLocalDecl(variableName, new SourceInfo(initValue, initValue, null, type,
ilg
));
2161
RaCodeGen.WriteTypeCompare(variable, type,
ilg
);
2164
RaCodeGen.WriteInstanceOf(source, type,
ilg
);
2167
RaCodeGen.WriteArrayTypeCompare(variable, arrayType,
ilg
);