3 writes to iterCurr
System.Data.SqlXml (3)
System\Xml\Xsl\IlGen\XmlIlVisitor.cs (3)
4314
this.
iterCurr
= new IteratorDescriptor(this.helper);
4318
this.
iterCurr
= new IteratorDescriptor(iterParent);
4363
this.
iterCurr
= this.iterCurr.ParentIterator;
236 references to iterCurr
System.Data.SqlXml (236)
System\Xml\Xsl\IlGen\XmlIlVisitor.cs (236)
70
Debug.Assert(this.
iterCurr
.Storage.Location == ItemLocation.None, "Root expression should have been pushed to the writer.");
299
Debug.Assert(nd.XmlType.IsSingleton || CachesResult(nd) || this.
iterCurr
.HasLabelNext,
332
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(XPathItem), true);
351
this.
iterCurr
.EnsureItemStorageType(nd.XmlType, typeof(XPathItem));
356
this.
iterCurr
.EnsureItemStorageType(nd.XmlType, typeof(XPathItem));
359
this.
iterCurr
.EnsureNoStackNoCache("$$$copyTemp");
365
this.
iterCurr
.EnsureStackNoCache();
391
this.helper.Emit(OpCodes.Brfalse, this.
iterCurr
.GetLabelNext());
393
this.
iterCurr
.Storage = StorageDescriptor.Local(locNav, typeof(XPathNavigator), false);
422
this.
iterCurr
.Storage = StorageDescriptor.None();
427
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(XPathItem), false);
443
this.
iterCurr
.Storage = StorageDescriptor.None();
459
if (this.
iterCurr
.CurrentBranchingContext != BranchingContext.None) {
462
this.helper.EmitUnconditionalBranch(this.
iterCurr
.CurrentBranchingContext == BranchingContext.OnTrue ?
463
OpCodes.Brtrue : OpCodes.Brfalse, this.
iterCurr
.LabelBranch);
465
this.
iterCurr
.Storage = StorageDescriptor.None();
470
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(bool), false);
485
if (this.
iterCurr
.CurrentBranchingContext != BranchingContext.None) {
488
this.helper.EmitUnconditionalBranch(this.
iterCurr
.CurrentBranchingContext == BranchingContext.OnFalse ?
489
OpCodes.Brtrue : OpCodes.Brfalse, this.
iterCurr
.LabelBranch);
491
this.
iterCurr
.Storage = StorageDescriptor.None();
496
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(bool), false);
507
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(string), false);
516
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(int), false);
525
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(long), false);
534
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(double), false);
543
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(decimal), false);
552
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(XmlQualifiedName), false);
580
IteratorDescriptor iterParent = this.
iterCurr
;
611
this.
iterCurr
.SetBranching(BranchingContext.OnFalse, lblBranch);
619
this.
iterCurr
.SetBranching(BranchingContext.OnFalse, lblOnFalse);
631
this.
iterCurr
.SetBranching(BranchingContext.OnTrue, lblBranch);
637
this.
iterCurr
.SetBranching(BranchingContext.OnFalse, lblOnFalse);
653
this.
iterCurr
.Storage = StorageDescriptor.None();
659
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(bool), false);
691
switch (this.
iterCurr
.CurrentBranchingContext) {
701
NestedVisitWithBranch(ndOr.Left, BranchingContext.OnTrue, this.
iterCurr
.LabelBranch);
706
Debug.Assert(this.
iterCurr
.CurrentBranchingContext == BranchingContext.None);
713
switch (this.
iterCurr
.CurrentBranchingContext) {
716
NestedVisitWithBranch(ndOr.Right, BranchingContext.OnFalse, this.
iterCurr
.LabelBranch);
721
NestedVisitWithBranch(ndOr.Right, BranchingContext.OnTrue, this.
iterCurr
.LabelBranch);
732
switch (this.
iterCurr
.CurrentBranchingContext) {
739
this.
iterCurr
.Storage = StorageDescriptor.None();
745
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(bool), false);
776
switch (this.
iterCurr
.CurrentBranchingContext) {
778
NestedVisitWithBranch(ndNot.Child, BranchingContext.OnTrue, this.
iterCurr
.LabelBranch);
782
NestedVisitWithBranch(ndNot.Child, BranchingContext.OnFalse, this.
iterCurr
.LabelBranch);
787
Debug.Assert(this.
iterCurr
.CurrentBranchingContext == BranchingContext.None);
793
if (this.
iterCurr
.CurrentBranchingContext == BranchingContext.None) {
796
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(bool), false);
799
this.
iterCurr
.Storage = StorageDescriptor.None();
839
this.
iterCurr
.Storage = StorageDescriptor.None();
898
this.
iterCurr
.SetIterator(lblNext, StorageDescriptor.Local(locCond, itemStorageType, false));
916
if (this.
iterCurr
.IsBranching) {
918
NestedVisitWithBranch(ndBranch, this.
iterCurr
.CurrentBranchingContext, this.
iterCurr
.LabelBranch);
926
NestedVisit(ndBranch, this.
iterCurr
.GetLabelNext());
927
this.
iterCurr
.EnsureItemStorageType(ndBranch.XmlType, itemStorageType);
928
this.
iterCurr
.EnsureLocalNoCache(locResult);
983
this.
iterCurr
.Storage = StorageDescriptor.None();
1014
this.
iterCurr
.EnsureNoCache();
1015
this.
iterCurr
.DiscardStack();
1029
this.
iterCurr
.LoopToEnd(lblOnEnd);
1034
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(int), false);
1067
this.helper.EmitUnconditionalBranch(OpCodes.Brtrue, this.
iterCurr
.GetLabelNext());
1071
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(XPathItem), false);
1095
this.
iterCurr
.DiscardStack();
1099
this.
iterCurr
.Storage = StorageDescriptor.Stack(itemStorageType, false);
1118
lblOnEnd = this.
iterCurr
.GetLabelNext();
1130
this.
iterCurr
.EnsureItemStorageType(ndSeq[i].XmlType, itemStorageType);
1131
this.
iterCurr
.EnsureLocalNoCache(locList);
1155
this.
iterCurr
.SetIterator(lblNext, StorageDescriptor.Local(locList, itemStorageType, false));
1206
this.
iterCurr
.EnsureLocal(locNav);
1215
this.
iterCurr
.EnsureLocal(locNav);
1239
this.
iterCurr
.Storage = StorageDescriptor.Current(locIter, typeof(XPathNavigator));
1242
this.helper.Emit(OpCodes.Switch, new Label[] {this.
iterCurr
.GetLabelNext(), lblInitRight, lblNextLeft, lblNextRight});
1243
this.
iterCurr
.SetIterator(lblNext, StorageDescriptor.Current(locIter, typeof(XPathNavigator)));
1301
this.
iterCurr
.EnsureStackNoCache();
1302
this.
iterCurr
.EnsureItemStorageType(ndAgg.XmlType, GetItemStorageType(ndAgg));
1307
this.
iterCurr
.LoopToEnd(lblOnEnd);
1316
this.helper.Emit(OpCodes.Brtrue, this.
iterCurr
.GetLabelNext());
1322
this.
iterCurr
.Storage = StorageDescriptor.Stack(GetItemStorageType(ndAgg), false);
1333
this.
iterCurr
.Storage = StorageDescriptor.Stack(GetItemStorageType(ndNeg), false);
1378
this.
iterCurr
.Storage = StorageDescriptor.Stack(GetItemStorageType(ndOp), false);
1388
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(int), false);
1455
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(string), false);
1472
this.
iterCurr
.EnsureStackNoCache();
1473
this.
iterCurr
.EnsureItemStorageType(ndStr.XmlType, typeof(string));
1480
this.
iterCurr
.LoopToEnd(lblOnEnd);
1526
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(XmlQualifiedName), false);
1694
this.
iterCurr
.Storage = iterInfo.Storage;
1697
if (this.
iterCurr
.Storage.Location == ItemLocation.Global) {
1699
this.
iterCurr
.EnsureStack();
1753
this.
iterCurr
.SetIterator(this.iterNested);
1757
this.
iterCurr
.SetBranching(BranchingContext.OnFalse, this.
iterCurr
.ParentIterator.GetLabelNext());
1918
this.
iterCurr
.EnsureStackNoCache();
1920
this.
iterCurr
.EnsureStackNoCache();
1921
this.
iterCurr
.EnsureItemStorageType(nodes.XmlType, typeof(XPathNavigator));
1926
this.
iterCurr
.LoopToEnd(lblOnEnd);
1939
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(XPathNavigator), true);
1985
if (this.
iterCurr
.HasLabelNext)
1986
StartNestedIterator(ndFor.Binding, this.
iterCurr
.GetLabelNext());
2006
this.
iterCurr
.EnsureLocalNoCache("$$$for");
2007
this.
iterCurr
.Storage.LocalLocation.SetLocalSymInfo(ndFor.DebugName);
2011
this.
iterCurr
.EnsureNoStackNoCache("$$$for");
2025
this.helper.Emit(OpCodes.Bgt, this.
iterCurr
.ParentIterator.GetLabelNext());
2028
this.
iterCurr
.LocalPosition = locPos;
2032
this.
iterCurr
.SetIterator(this.iterNested);
2053
this.
iterCurr
.EnsureLocal("$$$cache");
2054
this.
iterCurr
.Storage.LocalLocation.SetLocalSymInfo(ndLet.DebugName);
2058
this.
iterCurr
.EnsureNoStack("$$$cache");
2085
this.
iterCurr
.Storage = StorageDescriptor.Local(locPos, typeof(int), false);
2121
this.
iterCurr
.EnsureStackNoCache();
2122
this.
iterCurr
.EnsureItemStorageType(ndSort.Variable.XmlType, GetItemStorageType(ndSort.Variable));
2136
this.
iterCurr
.LoopToEnd(lblOnEndSort);
2148
this.
iterCurr
.Storage = StorageDescriptor.Local(locCache, itemStorageType, true);
2151
this.
iterCurr
.SetIterator(this.iterNested);
2186
this.
iterCurr
.EnsureStackNoCache();
2187
this.
iterCurr
.EnsureItemStorageType(ndKey.Key.XmlType, GetItemStorageType(ndKey.Key));
2225
this.
iterCurr
.EnsureStack();
2339
Debug.Assert(this.
iterCurr
.Storage.IsCached, "DodMerge pattern should only be matched when cached sequences are returned from loop");
2340
this.
iterCurr
.EnsureStack();
2345
this.
iterCurr
.LoopToEnd(lblOnEnd);
2352
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(XPathNavigator), true);
2388
this.
iterCurr
.Storage = StorageDescriptor.Stack(GetItemStorageType(ndInvoke), !ndInvoke.XmlType.IsSingleton);
2391
this.
iterCurr
.Storage = StorageDescriptor.None();
2423
this.helper.Emit(OpCodes.Brfalse, this.
iterCurr
.GetLabelNext());
2425
this.
iterCurr
.Storage = StorageDescriptor.Local(locNav, typeof(XPathNavigator), false);
2442
this.helper.Emit(OpCodes.Brfalse, this.
iterCurr
.GetLabelNext());
2444
this.
iterCurr
.Storage = StorageDescriptor.Local(locNav, typeof(XPathNavigator), false);
2462
this.
iterCurr
.Storage = StorageDescriptor.Local(locNav, typeof(XPathNavigator), false);
2476
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(XPathNavigator), false);
2615
this.
iterCurr
.Storage = StorageDescriptor.None();
2651
this.
iterCurr
.Storage = StorageDescriptor.None();
2670
this.
iterCurr
.Storage = StorageDescriptor.None();
2691
this.
iterCurr
.Storage = StorageDescriptor.None();
2764
this.
iterCurr
.Storage = StorageDescriptor.None();
2783
this.
iterCurr
.Storage = StorageDescriptor.None();
2818
this.
iterCurr
.Storage = StorageDescriptor.None();
2847
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(XPathNavigator), false);
2893
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(XmlQualifiedName), false);
2899
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(string), false);
2905
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(string), false);
2911
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(string), false);
2926
if (!ndTypeAssert.Source.XmlType.IsSingleton && ndTypeAssert.XmlType.IsSingleton && !this.
iterCurr
.HasLabelNext) {
2942
this.
iterCurr
.EnsureItemStorageType(ndTypeAssert.Source.XmlType, GetItemStorageType(ndTypeAssert));
2960
Debug.Assert(this.
iterCurr
.Storage.ItemStorageType == typeof(XPathItem), "If !IsNode, then storage type should be Item");
3125
switch (this.
iterCurr
.CurrentBranchingContext) {
3128
this.helper.TestAndBranch(0, this.
iterCurr
.LabelBranch, OpCodes.Bne_Un);
3133
this.helper.TestAndBranch(0, this.
iterCurr
.LabelBranch, OpCodes.Beq);
3137
Debug.Assert(this.
iterCurr
.CurrentBranchingContext == BranchingContext.None);
3150
IteratorDescriptor iterParent = this.
iterCurr
;
3154
StartNestedIterator(ndIsEmpty.Child, this.
iterCurr
.LabelBranch);
3161
this.
iterCurr
.EnsureNoCache();
3162
this.
iterCurr
.DiscardStack();
3185
if (this.
iterCurr
.IsBranching)
3186
this.
iterCurr
.Storage = StorageDescriptor.None();
3188
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(bool), false);
3214
this.
iterCurr
.EnsureStackNoCache();
3230
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(string), false);
3283
this.
iterCurr
.EnsureStackNoCache();
3284
this.
iterCurr
.EnsureItemStorageType(ndGenId.Child.XmlType, typeof(XPathNavigator));
3301
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(string), false);
3335
this.
iterCurr
.EnsureStack();
3345
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(XPathItem), true);
3464
this.
iterCurr
.Storage = StorageDescriptor.Stack(GetItemStorageType(ndInvoke), !ndInvoke.XmlType.IsSingleton);
3499
this.
iterCurr
.Storage = StorageDescriptor.None();
3515
this.
iterCurr
.Storage = StorageDescriptor.None();
3543
this.
iterCurr
.Storage = StorageDescriptor.Stack(GetItemStorageType(typDst), !typDst.IsSingleton);
3714
this.
iterCurr
.Storage = this.iterNested.Storage;
3739
this.helper.Emit(OpCodes.Brfalse, this.
iterCurr
.GetLabelNext());
3741
this.
iterCurr
.SetIterator(lblNext, StorageDescriptor.Current(locIter, itemStorageType));
3768
this.
iterCurr
.EnsureNoStackNoCache(nd.XmlType.IsNode ? "$$$navInput" : "$$$itemInput");
3770
this.
iterCurr
.PushValue();
3790
this.
iterCurr
.Storage = StorageDescriptor.Current(locIter, itemStorageType);
3797
this.helper.Emit(OpCodes.Switch, new Label[] {this.
iterCurr
.GetLabelNext(), this.iterNested.GetLabelNext()});
3799
this.
iterCurr
.SetIterator(lblOnEndNested, StorageDescriptor.Current(locIter, itemStorageType));
3980
switch (this.
iterCurr
.CurrentBranchingContext) {
4007
this.helper.Emit(opcode, this.
iterCurr
.LabelBranch);
4008
this.
iterCurr
.Storage = StorageDescriptor.None();
4021
this.helper.Emit(opcode, this.
iterCurr
.LabelBranch);
4022
this.
iterCurr
.Storage = StorageDescriptor.None();
4026
Debug.Assert(this.
iterCurr
.CurrentBranchingContext == BranchingContext.None);
4045
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(bool), false);
4059
switch (this.
iterCurr
.CurrentBranchingContext) {
4063
this.helper.Emit((relOp == QilNodeType.Eq) ? OpCodes.Brfalse : OpCodes.Brtrue, this.
iterCurr
.LabelBranch);
4064
this.
iterCurr
.Storage = StorageDescriptor.None();
4070
this.helper.Emit((relOp == QilNodeType.Eq) ? OpCodes.Brtrue : OpCodes.Brfalse, this.
iterCurr
.LabelBranch);
4071
this.
iterCurr
.Storage = StorageDescriptor.None();
4075
Debug.Assert(this.
iterCurr
.CurrentBranchingContext == BranchingContext.None);
4086
this.
iterCurr
.Storage = StorageDescriptor.Stack(typeof(bool), false);
4106
if (!this.
iterCurr
.HasLabelNext) {
4110
this.
iterCurr
.SetIterator(lblOnEnd, StorageDescriptor.None());
4126
this.
iterCurr
.Storage = StorageDescriptor.None();
4134
this.
iterCurr
.LoopToEnd(lblOnEnd);
4309
IteratorDescriptor iterParent = this.
iterCurr
;
4330
this.
iterCurr
.SetIterator(lblOnEnd, StorageDescriptor.None());
4337
Debug.Assert(this.
iterCurr
.Storage.Location == ItemLocation.None ||
4338
this.
iterCurr
.Storage.ItemStorageType == GetItemStorageType(nd) ||
4339
this.
iterCurr
.Storage.ItemStorageType == typeof(XPathItem) ||
4341
"QilNodeType " + nd.NodeType + " cannot be stored using type " + this.
iterCurr
.Storage.ItemStorageType + ".");
4344
if (this.
iterCurr
.IsBranching) {
4346
if (this.
iterCurr
.Storage.Location != ItemLocation.None) {
4347
this.
iterCurr
.EnsureItemStorageType(nd.XmlType, typeof(bool));
4348
this.
iterCurr
.EnsureStackNoCache();
4350
if (this.
iterCurr
.CurrentBranchingContext == BranchingContext.OnTrue)
4351
this.helper.Emit(OpCodes.Brtrue, this.
iterCurr
.LabelBranch);
4353
this.helper.Emit(OpCodes.Brfalse, this.
iterCurr
.LabelBranch);
4355
this.
iterCurr
.Storage = StorageDescriptor.None();
4360
this.iterNested = this.
iterCurr
;
4363
this.iterCurr = this.
iterCurr
.ParentIterator;
4378
this.
iterCurr
.Storage = StorageDescriptor.None();
4384
this.
iterCurr
.EnsureNoCache();
4385
this.
iterCurr
.EnsureItemStorageType(nd.XmlType, itemStorageType);
4387
this.
iterCurr
.Storage = this.iterNested.Storage;
4409
this.
iterCurr
.EnsureNoCache();
4410
this.
iterCurr
.EnsureItemStorageType(nd.XmlType, GetItemStorageType(nd));
4412
this.
iterCurr
.Storage = this.iterNested.Storage;
4421
this.
iterCurr
.EnsureStack();
4438
this.
iterCurr
.EnsureStack();
4447
this.
iterCurr
.EnsureLocal(loc);
4456
this.
iterCurr
.SetBranching(brctxt, lblBranch);
4459
this.
iterCurr
.Storage = StorageDescriptor.None();
4479
this.
iterCurr
.Storage = this.iterNested.Storage;
4480
Debug.Assert(this.
iterCurr
.Storage.IsCached, "Expression result should be cached. CachesResult() might have a bug in it.");
4483
if (this.
iterCurr
.Storage.ItemStorageType == itemStorageType)
4488
if (this.
iterCurr
.Storage.ItemStorageType == typeof(XPathNavigator) || itemStorageType == typeof(XPathNavigator)) {
4489
this.
iterCurr
.EnsureItemStorageType(nd.XmlType, itemStorageType);
4493
this.
iterCurr
.EnsureNoStack("$$$cacheResult");
4521
this.
iterCurr
.Storage = this.
iterCurr
.ParentIterator.Storage;
4526
this.
iterCurr
.EnsureItemStorageType(nd.XmlType, cacheType);
4527
this.
iterCurr
.EnsureStackNoCache();
4532
this.
iterCurr
.LoopToEnd(lblOnEnd);
4540
this.
iterCurr
.Storage = StorageDescriptor.Local(locCache, itemStorageType, true);