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