Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ VisitLt()

override QilNode System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitLt ( QilBinary local0)
inlineprotectedvirtual

Reimplemented from System.Xml.Xsl.Qil.QilVisitor.

Definition at line 1324 of file XmlILOptimizerVisitor.cs.

1325 {
1326 QilNode qilNode = local0[0];
1327 QilNode qilNode2 = local0[1];
1328 if (this[XmlILOptimization.FoldNone] && (object)qilNode.XmlType == XmlQueryTypeFactory.None && AllowReplace(XmlILOptimization.FoldNone, local0))
1329 {
1330 return Replace(XmlILOptimization.FoldNone, local0, VisitNop(f.Nop(qilNode)));
1331 }
1332 if (this[XmlILOptimization.FoldNone] && (object)qilNode2.XmlType == XmlQueryTypeFactory.None && AllowReplace(XmlILOptimization.FoldNone, local0))
1333 {
1334 return Replace(XmlILOptimization.FoldNone, local0, VisitNop(f.Nop(qilNode2)));
1335 }
1336 if (this[XmlILOptimization.EliminateLt] && IsLiteral(qilNode) && IsLiteral(qilNode2) && AllowReplace(XmlILOptimization.EliminateLt, local0))
1337 {
1339 }
1340 if (this[XmlILOptimization.NormalizeLtLiteral] && IsLiteral(qilNode) && !IsLiteral(qilNode2) && AllowReplace(XmlILOptimization.NormalizeLtLiteral, local0))
1341 {
1342 return Replace(XmlILOptimization.NormalizeLtLiteral, local0, VisitGt(f.Gt(qilNode2, qilNode)));
1343 }
1344 if (this[XmlILOptimization.NormalizeXsltConvertLt] && qilNode.NodeType == QilNodeType.XsltConvert)
1345 {
1348 if (qilNode4.NodeType == QilNodeType.LiteralType)
1349 {
1350 XmlQueryType typ = (XmlQueryType)((QilLiteral)qilNode4).Value;
1352 {
1353 return Replace(XmlILOptimization.NormalizeXsltConvertLt, local0, VisitLt(f.Lt(qilNode3, FoldXsltConvert(qilNode2, qilNode3.XmlType))));
1354 }
1355 }
1356 }
1357 if (this[XmlILOptimization.AnnotateMaxLengthLt] && qilNode.NodeType == QilNodeType.Length && qilNode2.NodeType == QilNodeType.LiteralInt32)
1358 {
1359 int num = (int)((QilLiteral)qilNode2).Value;
1360 if (AllowReplace(XmlILOptimization.AnnotateMaxLengthLt, local0))
1361 {
1362 OptimizerPatterns.Write(qilNode).AddPattern(OptimizerPatternName.MaxPosition);
1363 OptimizerPatterns.Write(qilNode).AddArgument(OptimizerPatternArgument.ElementQName, num);
1364 }
1365 }
1366 return NoReplace(local0);
1367 }
QilNode FoldComparison(QilNodeType opType, QilNode left, QilNode right)
bool AllowReplace(XmlILOptimization pattern, QilNode original)
bool CanFoldXsltConvertNonLossy(QilNode ndLiteral, XmlQueryType typTarget)
override QilNode VisitGt(QilBinary local0)
QilNode FoldXsltConvert(QilNode ndLiteral, XmlQueryType typTarget)
override QilNode VisitNop(QilUnary local0)
override QilNode VisitLt(QilBinary local0)
QilBinary Gt(QilNode left, QilNode right)
QilUnary Nop(QilNode child)
QilBinary Lt(QilNode left, QilNode right)

References System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.AllowReplace(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.CanFoldXsltConvertNonLossy(), System.Xml.Dictionary, System.Xml.Xsl.Qil.QilReplaceVisitor.f, System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.FoldComparison(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.FoldXsltConvert(), System.Xml.Xsl.Qil.QilFactory.Gt(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.IsLiteral(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.IsPrimitiveNumeric(), System.Xml.Xsl.Qil.QilFactory.Lt(), System.Xml.Xsl.XmlQueryTypeFactory.None, System.Xml.Xsl.Qil.QilFactory.Nop(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.NoReplace(), System.Xml.Replace, System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitGt(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitLt(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitNop(), and System.Xml.Xsl.IlGen.OptimizerPatterns.Write().

Referenced by System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitGt(), and System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitLt().