System.Xml.Xsl.IlGen.XmlILOptimizerVisitor.VisitEq C# (CSharp) Method

VisitEq() protected method

protected VisitEq ( QilBinary local0 ) : QilNode
local0 System.Xml.Xsl.Qil.QilBinary
return QilNode
        protected override QilNode VisitEq(QilBinary local0) {
            QilNode local1 = local0[0];
            QilNode local2 = local0[1];
            if (this[XmlILOptimization.FoldNone]) {
                if ( (object) ( (local1).XmlType ) == (object) XmlQueryTypeFactory.None ) {
                    if (AllowReplace(XmlILOptimization.FoldNone, local0)) {
                        return Replace(XmlILOptimization.FoldNone, local0, VisitNop(f.Nop(local1)));
                    }
                }
            }
            if (this[XmlILOptimization.FoldNone]) {
                if ( (object) ( (local2).XmlType ) == (object) XmlQueryTypeFactory.None ) {
                    if (AllowReplace(XmlILOptimization.FoldNone, local0)) {
                        return Replace(XmlILOptimization.FoldNone, local0, VisitNop(f.Nop(local2)));
                    }
                }
            }
            if (this[XmlILOptimization.EliminateEq]) {
                if ( IsLiteral((local1)) ) {
                    if ( IsLiteral((local2)) ) {
                        if (AllowReplace(XmlILOptimization.EliminateEq, local0)) {
                            return Replace(XmlILOptimization.EliminateEq, local0,  FoldComparison(QilNodeType.Eq, local1, local2) );
                        }
                    }
                }
            }
            if (this[XmlILOptimization.NormalizeEqLiteral]) {
                if ( IsLiteral((local1)) ) {
                    if (!( IsLiteral((local2)) )) {
                        if (AllowReplace(XmlILOptimization.NormalizeEqLiteral, local0)) {
                            return Replace(XmlILOptimization.NormalizeEqLiteral, local0, VisitEq(f.Eq(local2, local1)));
                        }
                    }
                }
            }
            if (this[XmlILOptimization.NormalizeXsltConvertEq]) {
                if (local1.NodeType == QilNodeType.XsltConvert) {
                    QilNode local3 = local1[0];
                    QilNode local4 = local1[1];
                    if (local4.NodeType == QilNodeType.LiteralType) {
                        XmlQueryType local5 = (XmlQueryType)((QilLiteral)local4).Value;
                        if (( IsPrimitiveNumeric( (local3).XmlType ) ) && ( IsPrimitiveNumeric(local5) )) {
                            if (( IsLiteral((local2)) ) && ( CanFoldXsltConvertNonLossy(local2,  (local3).XmlType ) )) {
                                if (AllowReplace(XmlILOptimization.NormalizeXsltConvertEq, local0)) {
                                    return Replace(XmlILOptimization.NormalizeXsltConvertEq, local0, VisitEq(f.Eq(local3,  FoldXsltConvert(local2,  (local3).XmlType ) )));
                                }
                            }
                        }
                    }
                }
            }
            if (this[XmlILOptimization.NormalizeAddEq]) {
                if (local1.NodeType == QilNodeType.Add) {
                    QilNode local3 = local1[0];
                    QilNode local4 = local1[1];
                    if ( IsLiteral((local4)) ) {
                        if (( IsLiteral((local2)) ) && ( CanFoldArithmetic(QilNodeType.Subtract, (QilLiteral) local2, (QilLiteral) local4) )) {
                            if (AllowReplace(XmlILOptimization.NormalizeAddEq, local0)) {
                                return Replace(XmlILOptimization.NormalizeAddEq, local0, VisitEq(f.Eq(local3,  FoldArithmetic(QilNodeType.Subtract, (QilLiteral) local2, (QilLiteral) local4) )));
                            }
                        }
                    }
                }
            }
            if (this[XmlILOptimization.NormalizeIdEq]) {
                if (local1.NodeType == QilNodeType.XsltGenerateId) {
                    QilNode local3 = local1[0];
                    if ( ( (local3).XmlType ).IsSingleton ) {
                        if (local2.NodeType == QilNodeType.XsltGenerateId) {
                            QilNode local4 = local2[0];
                            if ( ( (local4).XmlType ).IsSingleton ) {
                                if (AllowReplace(XmlILOptimization.NormalizeIdEq, local0)) {
                                    return Replace(XmlILOptimization.NormalizeIdEq, local0, VisitIs(f.Is(local3, local4)));
                                }
                            }
                        }
                    }
                }
            }
            if (this[XmlILOptimization.NormalizeIdEq]) {
                if (local1.NodeType == QilNodeType.XsltGenerateId) {
                    QilNode local3 = local1[0];
                    if ( ( (local3).XmlType ).IsSingleton ) {
                        if (local2.NodeType == QilNodeType.StrConcat) {
                            QilNode local5 = local2[1];
                            if (local5.NodeType == QilNodeType.Loop) {
                                QilNode local6 = local5[0];
                                QilNode local8 = local5[1];
                                if (local6.NodeType == QilNodeType.For) {
                                    QilNode local7 = local6[0];
                                    if ( !( (local7).XmlType ).MaybeMany ) {
                                        if (local8.NodeType == QilNodeType.XsltGenerateId) {
                                            QilNode local9 = local8[0];
                                            if (local9 == local6) {
                                                if (AllowReplace(XmlILOptimization.NormalizeIdEq, local0)) {
                                                    QilNode local10 = VisitFor(f.For(local7));
                                                    return Replace(XmlILOptimization.NormalizeIdEq, local0, VisitNot(f.Not(VisitIsEmpty(f.IsEmpty(VisitFilter(f.Filter(local10, VisitIs(f.Is(local3, local10)))))))));
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            if (this[XmlILOptimization.NormalizeIdEq]) {
                if (local1.NodeType == QilNodeType.StrConcat) {
                    QilNode local4 = local1[1];
                    if (local4.NodeType == QilNodeType.Loop) {
                        QilNode local5 = local4[0];
                        QilNode local7 = local4[1];
                        if (local5.NodeType == QilNodeType.For) {
                            QilNode local6 = local5[0];
                            if ( !( (local6).XmlType ).MaybeMany ) {
                                if (local7.NodeType == QilNodeType.XsltGenerateId) {
                                    QilNode local8 = local7[0];
                                    if (local8 == local5) {
                                        if (local2.NodeType == QilNodeType.XsltGenerateId) {
                                            QilNode local9 = local2[0];
                                            if ( ( (local9).XmlType ).IsSingleton ) {
                                                if (AllowReplace(XmlILOptimization.NormalizeIdEq, local0)) {
                                                    QilNode local10 = VisitFor(f.For(local6));
                                                    return Replace(XmlILOptimization.NormalizeIdEq, local0, VisitNot(f.Not(VisitIsEmpty(f.IsEmpty(VisitFilter(f.Filter(local10, VisitIs(f.Is(local9, local10)))))))));
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            if (this[XmlILOptimization.NormalizeMuenchian]) {
                if (local1.NodeType == QilNodeType.Length) {
                    QilNode local3 = local1[0];
                    if (local3.NodeType == QilNodeType.Union) {
                        QilNode local4 = local3[0];
                        QilNode local5 = local3[1];
                        if (( ( (local4).XmlType ).IsSingleton ) && ( !( (local5).XmlType ).MaybeMany )) {
                            if (local2.NodeType == QilNodeType.LiteralInt32) {
                                int local6 = (int)((QilLiteral)local2).Value;
                                if (local6 == 1) {
                                    if (AllowReplace(XmlILOptimization.NormalizeMuenchian, local0)) {
                                        QilNode local7 = VisitFor(f.For(local5));
                                        return Replace(XmlILOptimization.NormalizeMuenchian, local0, VisitIsEmpty(f.IsEmpty(VisitFilter(f.Filter(local7, VisitNot(f.Not(VisitIs(f.Is(local4, local7)))))))));
                                    }
                                }
                            }
                        }
                    }
                }
            }
            if (this[XmlILOptimization.NormalizeMuenchian]) {
                if (local1.NodeType == QilNodeType.Length) {
                    QilNode local3 = local1[0];
                    if (local3.NodeType == QilNodeType.Union) {
                        QilNode local4 = local3[0];
                        QilNode local5 = local3[1];
                        if (( !( (local4).XmlType ).MaybeMany ) && ( ( (local5).XmlType ).IsSingleton )) {
                            if (local2.NodeType == QilNodeType.LiteralInt32) {
                                int local6 = (int)((QilLiteral)local2).Value;
                                if (local6 == 1) {
                                    if (AllowReplace(XmlILOptimization.NormalizeMuenchian, local0)) {
                                        QilNode local7 = VisitFor(f.For(local4));
                                        return Replace(XmlILOptimization.NormalizeMuenchian, local0, VisitIsEmpty(f.IsEmpty(VisitFilter(f.Filter(local7, VisitNot(f.Not(VisitIs(f.Is(local7, local5)))))))));
                                    }
                                }
                            }
                        }
                    }
                }
            }
            if (this[XmlILOptimization.AnnotateMaxLengthEq]) {
                if (local1.NodeType == QilNodeType.Length) {
                    if (local2.NodeType == QilNodeType.LiteralInt32) {
                        int local4 = (int)((QilLiteral)local2).Value;
                        if (AllowReplace(XmlILOptimization.AnnotateMaxLengthEq, local0)) {
                             OptimizerPatterns.Write((QilNode) (local1)).AddPattern(OptimizerPatternName.MaxPosition);  OptimizerPatterns.Write((QilNode) (local1)).AddArgument(OptimizerPatternArgument.MaxPosition, local4);  }
                    }
                }
            }
            return NoReplace(local0);
        }
        
XmlILOptimizerVisitor