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 } };
     }
 }
Esempio n. 2
0
        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 }
                };
            }
        }