protected NestedEncoderVisitor(EncoderVisitor parentVisitor) { if (parentVisitor == null) { throw new ArgumentNullException(); } this._ParentVisitor = parentVisitor; }
public MessageVisitor(EncoderVisitor parentVisitor, Expression receiver, bool superSend, bool constantReceiver, bool hasCascadeMessages) : base(parentVisitor) { if (receiver == null) { throw new ArgumentNullException(); } this.Receiver = receiver; this.IsSuperSend = superSend; this.IsConstantReceiver = constantReceiver; this.CascadeConstantReceiver = false; if (hasCascadeMessages) { this.CascadeReceiver = Expression.Variable(typeof(object), "_cascadeSelf"); } else { this.CascadeReceiver = null; } this.CascadeSuperSend = false; }
public ExpressionVisitor(EncoderVisitor parentVisitor) : base(parentVisitor) { this.IsConstant = false; }
public LiteralVisitorExpressionValue(EncoderVisitor parentVisitor) : base(parentVisitor) { }
public StatementVisitor(EncoderVisitor parentVisitor) : base(parentVisitor) { this.HasReturned = false; }
public LiteralVisitorConstantValue(EncoderVisitor parentVisitor) : base(parentVisitor) { }
public PrimaryVisitor(EncoderVisitor parentVisitor) : base(parentVisitor) { this.IsConstant = false; }
internal abstract Expression CompileLightweightExceptionCheck(EncoderVisitor visitor, Expression expression);
// Helper for normal send binary messages - because it's used often when inlining public Expression CompileDynamicCall(EncoderVisitor visitor, string selector, Expression receiver, Expression argument) { return(this.CompileLightweightExceptionCheck(visitor, this.Compiler.DynamicCallStrategy.CompileDynamicCall(this, selector, selector, false, false, this.SuperLookupScope, receiver, this.ExecutionContextArgument, argument))); }
public Expression CompileDynamicCall(EncoderVisitor visitor, string selector, string nativeName, int argumentCount, bool isSuperSend, bool isConstantReceiver, Expression receiver, IEnumerable <Expression> arguments) { return(this.CompileLightweightExceptionCheck(visitor, this.Compiler.DynamicCallStrategy.CompileDynamicCall(this, selector, nativeName, argumentCount, isSuperSend, isConstantReceiver, this.SuperLookupScope, receiver, this.ExecutionContextArgument, arguments))); }
public BlockVisitorBase(EncoderVisitor parentVisitor) : base(parentVisitor) { }
public InlineBlockVisitor(EncoderVisitor parentVisitor) : base(parentVisitor) { this._Context = new InlineBlockCompilationContext(this.ParentVisitor.Context); }