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

◆ VisitLe()

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

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

Definition at line 1369 of file XmlILOptimizerVisitor.cs.

1370 {
1371 QilNode qilNode = local0[0];
1372 QilNode qilNode2 = local0[1];
1373 if (this[XmlILOptimization.FoldNone] && (object)qilNode.XmlType == XmlQueryTypeFactory.None && AllowReplace(XmlILOptimization.FoldNone, local0))
1374 {
1375 return Replace(XmlILOptimization.FoldNone, local0, VisitNop(f.Nop(qilNode)));
1376 }
1377 if (this[XmlILOptimization.FoldNone] && (object)qilNode2.XmlType == XmlQueryTypeFactory.None && AllowReplace(XmlILOptimization.FoldNone, local0))
1378 {
1379 return Replace(XmlILOptimization.FoldNone, local0, VisitNop(f.Nop(qilNode2)));
1380 }
1381 if (this[XmlILOptimization.EliminateLe] && IsLiteral(qilNode) && IsLiteral(qilNode2) && AllowReplace(XmlILOptimization.EliminateLe, local0))
1382 {
1384 }
1385 if (this[XmlILOptimization.NormalizeLeLiteral] && IsLiteral(qilNode) && !IsLiteral(qilNode2) && AllowReplace(XmlILOptimization.NormalizeLeLiteral, local0))
1386 {
1387 return Replace(XmlILOptimization.NormalizeLeLiteral, local0, VisitGe(f.Ge(qilNode2, qilNode)));
1388 }
1389 if (this[XmlILOptimization.NormalizeXsltConvertLe] && qilNode.NodeType == QilNodeType.XsltConvert)
1390 {
1393 if (qilNode4.NodeType == QilNodeType.LiteralType)
1394 {
1395 XmlQueryType typ = (XmlQueryType)((QilLiteral)qilNode4).Value;
1397 {
1398 return Replace(XmlILOptimization.NormalizeXsltConvertLe, local0, VisitLe(f.Le(qilNode3, FoldXsltConvert(qilNode2, qilNode3.XmlType))));
1399 }
1400 }
1401 }
1402 if (this[XmlILOptimization.AnnotateMaxLengthLe] && qilNode.NodeType == QilNodeType.Length && qilNode2.NodeType == QilNodeType.LiteralInt32)
1403 {
1404 int num = (int)((QilLiteral)qilNode2).Value;
1405 if (AllowReplace(XmlILOptimization.AnnotateMaxLengthLe, local0))
1406 {
1407 OptimizerPatterns.Write(qilNode).AddPattern(OptimizerPatternName.MaxPosition);
1408 OptimizerPatterns.Write(qilNode).AddArgument(OptimizerPatternArgument.ElementQName, num);
1409 }
1410 }
1411 return NoReplace(local0);
1412 }
override QilNode VisitLe(QilBinary local0)
QilNode FoldComparison(QilNodeType opType, QilNode left, QilNode right)
override QilNode VisitGe(QilBinary local0)
bool AllowReplace(XmlILOptimization pattern, QilNode original)
bool CanFoldXsltConvertNonLossy(QilNode ndLiteral, XmlQueryType typTarget)
QilNode FoldXsltConvert(QilNode ndLiteral, XmlQueryType typTarget)
override QilNode VisitNop(QilUnary local0)
QilBinary Ge(QilNode left, QilNode right)
QilUnary Nop(QilNode child)
QilBinary Le(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.Ge(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.IsLiteral(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.IsPrimitiveNumeric(), System.Xml.Xsl.Qil.QilFactory.Le(), 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.VisitGe(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitLe(), System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitNop(), and System.Xml.Xsl.IlGen.OptimizerPatterns.Write().

Referenced by System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitGe(), and System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitLe().