Пример #1
0
 protected override ICode VisitVar(ExprVar e)
 {
     this.js.Append(this.resolver.LocalVarNames[e]);
     // Extra var processing
     this.vars.Add(e);
     if (e.ExprType == Expr.NodeType.VarParameter)
     {
         if (!this.parameters.ContainsKey(((ExprVarParameter)e).Parameter))
         {
             this.parameters.Add(((ExprVarParameter)e).Parameter, e);
         }
     }
     // Need to visit into phi variables to check for parameters
     if (e.ExprType == Expr.NodeType.VarPhi)
     {
         var args = ((ExprVarPhi)e).Exprs.Where(x => x.ExprType == Expr.NodeType.VarParameter).Cast <ExprVarParameter>();
         foreach (var arg in args)
         {
             if (!this.parameters.ContainsKey(arg.Parameter))
             {
                 this.parameters.Add(arg.Parameter, arg);
             }
         }
     }
     return(e);
 }
        protected override ICode VisitVar(ExprVar e)
        {
            var aInfo = this.GetAInfo(e);

            aInfo.count++;
            if (this.inPhiCount > 0)
            {
                aInfo.mustKeep = true;
            }
            return(base.VisitVar(e));
        }
Пример #3
0
        protected virtual ICode VisitVar(ExprVar e)
        {
            switch (e.ExprType)
            {
            case Expr.NodeType.VarExprInstResult:
                return(this.VisitVarInstResult((ExprVarInstResult)e));

            case Expr.NodeType.VarLocal:
                return(this.VisitVarLocal((ExprVarLocal)e));

            case Expr.NodeType.VarParameter:
                return(this.VisitVarParameter((ExprVarParameter)e));

            case Expr.NodeType.VarPhi:
                return(this.VisitVarPhi((ExprVarPhi)e));

            case Expr.NodeType.VarThis:
                return(this.VisitVarThis((ExprVarThis)e));

            default:
                throw new NotImplementedException("Cannot handle: " + e.ExprType);
            }
        }
Пример #4
0
 protected override ICode VisitVar(ExprVar e)
 {
     this.vars.Add(e);
     return(e);
 }
 private bool AreClustered(ExprVar a, ExprVar b)
 {
     return(phiClusters.Any(x => x.Contains(a) && x.Contains(b)));
 }
 public Updater(ExprVar target)
 {
     this.target = target;
 }
 private AssignmentInfo GetAInfo(ExprVar e)
 {
     return(this.assignments.ValueOrDefault(e, () => new AssignmentInfo(), true));
 }