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)); }
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); } }
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)); }