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

Optimize() public method

Perform normalization and annotation.
public Optimize ( ) : QilExpression
return System.Xml.Xsl.Qil.QilExpression
        public QilExpression Optimize() {
            QilExpression qil = (QilExpression) Visit(this.qil);

            // Perform tail-call analysis on all functions within the Qil expression
            if (this[XmlILOptimization.TailCall])
                TailCallAnalyzer.Analyze(qil);

            return qil;
        }

Usage Example

Exemplo n.º 1
0
        public static void TraceOptimizations(QilExpression qil, string fileName) {
            if (!IsEnabled)
                return;

            XmlWriter w = XmlWriter.Create(dirName + "\\" + fileName);

            w.WriteStartDocument();
            w.WriteProcessingInstruction("xml-stylesheet", "href='qilo.xslt' type='text/xsl'");
            w.WriteStartElement("QilOptimizer");
            w.WriteAttributeString("timestamp", DateTime.Now.ToString(CultureInfo.InvariantCulture));
            WriteQilRewrite(qil, w, null);

            try {
                // Then, rewrite the graph until "done" or some max value is reached.
                for (int i = 1; i < MAX_REWRITES; i++) {
                    QilExpression qilTemp = (QilExpression) (new QilCloneVisitor(qil.Factory).Clone(qil));

                    XmlILOptimizerVisitor visitor = new XmlILOptimizerVisitor(qilTemp, !qilTemp.IsDebug);
                    visitor.Threshold = i;
                    qilTemp = visitor.Optimize();

                    // In debug code, ensure that QIL after N steps is correct
                    QilValidationVisitor.Validate(qilTemp);

                    // Trace the rewrite
                    WriteQilRewrite(qilTemp, w, OptimizationToString(visitor.LastReplacement));

                    if (visitor.ReplacementCount < i)
                        break;
                }
            }
            catch (Exception e) {
                if (!XmlException.IsCatchableException(e)) {
                    throw;
                }
                w.WriteElementString("Exception", null, e.ToString());
                throw;
            }
            finally {
                w.WriteEndElement();
                w.WriteEndDocument();
                w.Flush();
                w.Close();
            }
        }
All Usage Examples Of System.Xml.Xsl.IlGen.XmlILOptimizerVisitor::Optimize
XmlILOptimizerVisitor