private Stmt LoadStaticField(Instruction inst) { var fRef = ((FieldReference)inst.Operand).FullResolve(this.ctx); var expr = new ExprFieldAccess(this.ctx, null, fRef); return(this.SsaLocalAssignment(expr)); }
private Stmt StoreStaticField(Instruction inst) { var value = this.stack.Pop(); var fRef = ((FieldReference)inst.Operand).FullResolve(this.ctx); var expr = new ExprFieldAccess(this.ctx, null, fRef); return(new StmtAssignment(this.ctx, expr, value)); }
protected override ICode VisitFieldAccess(ExprFieldAccess e) { if (e.IsStatic) { this.Add(e.Field.DeclaringType, e.Ctx); } return(e); }
protected override ICode VisitFieldAccess(ExprFieldAccess e) { if (!e.IsStatic) { this.Visit(e.Obj); this.js.Append("."); } this.js.Append(this.resolver.FieldNames[e.Field]); return(e); }
public static Stmt ctor(Ctx ctx) { Expression <Func <int> > eHashCode = () => hashCode; var field = (FieldInfo)((MemberExpression)eHashCode.Body).Member; var f = ctx.Module.Import(field); var fExpr = new ExprFieldAccess(ctx, null, f).Named("hashCode"); var stmt = new StmtJsExplicit(ctx, "this.$=++hashCode;", ctx.ThisNamed, fExpr); return(stmt); }
protected virtual ICode VisitFieldAccess(ExprFieldAccess e) { this.ThrowOnNoOverride(); var obj = (Expr)this.Visit(e.Obj); if (obj != e.Obj) { return(new ExprFieldAccess(e.Ctx, obj, e.Field)); } else { return(e); } }
protected override ICode VisitFieldAccess(ExprFieldAccess e) { if (e.IsStatic) { this.code.Append(e.Field.DeclaringType.FullName); } else { this.Visit(e.Obj); } this.code.Append("."); this.code.Append(e.Field.Name); return(e); }
public static Stmt ToArray(Ctx ctx) { var returnType = ctx.MRef.ReturnType.FullResolve(ctx); var a = ctx.Local(returnType, "a"); var arrayFieldRef = ctx.Module.Import(typeof(_List <T>)).EnumResolvedFields().First(); var array = new ExprFieldAccess(ctx, ctx.This, arrayFieldRef).Named("array"); var type = new ExprJsTypeVarName(ctx, returnType).Named("type"); var js = @" a = array.slice(0); a._ = type; return a; "; return(new StmtJsExplicit(ctx, js, a, type, array)); }
protected override ICode VisitFieldAccess(ExprFieldAccess e) { this.fieldAccesses.Add(e.Field); return(base.VisitFieldAccess(e)); }