private VisitorConvertCilToSsa(ICode root) { this.ctx = root.Ctx; var v = new VisitorFindInstResults(); v.Visit(root); this.instResults = v.instResults.ToDictionary(x => x.Inst); this.CreateOrMergeBsi((Stmt)root, new ExprVarPhi[0], this.ctx.MDef.Body.Variables.Select(x => (Expr)new ExprVarLocal(this.ctx, x.VariableType.FullResolve(this.ctx))).ToArray(), this.ctx.MRef.Parameters.Select(x => (Expr)new ExprVarParameter(this.ctx, x)).ToArray()); if (this.ctx.HasFakeThis) { this.blockStartInfos[root].Args[0] = new ExprVarPhi(this.ctx) { Exprs = new Expr[] { ctx.This } }; } }
private VisitorConvertCilToSsa(ICode root) { this.ctx = root.Ctx; var v = new VisitorFindInstResults(); v.Visit(root); this.instResults = v.instResults.ToDictionary(x => x.Inst); this.CreateOrMergeBsi((Stmt)root, new ExprVarPhi[0], this.ctx.MDef.Body.Variables.Select(x => (Expr) new ExprVarLocal(this.ctx, x.VariableType.FullResolve(this.ctx))).ToArray(), this.ctx.MRef.Parameters.Select(x => (Expr) new ExprVarParameter(this.ctx, x)).ToArray()); if (this.ctx.HasFakeThis) { this.blockStartInfos[root].Args[0] = new ExprVarPhi(this.ctx) { Exprs = new Expr[] { ctx.This } }; } }