示例#1
0
 protected NestedEncoderVisitor(EncoderVisitor parentVisitor)
 {
     if (parentVisitor == null)
     {
         throw new ArgumentNullException();
     }
     this._ParentVisitor = parentVisitor;
 }
示例#2
0
 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;
 }
示例#3
0
 public ExpressionVisitor(EncoderVisitor parentVisitor)
     : base(parentVisitor)
 {
     this.IsConstant = false;
 }
 public LiteralVisitorExpressionValue(EncoderVisitor parentVisitor)
     : base(parentVisitor)
 {
 }
示例#5
0
 public StatementVisitor(EncoderVisitor parentVisitor)
     : base(parentVisitor)
 {
     this.HasReturned = false;
 }
示例#6
0
 public LiteralVisitorConstantValue(EncoderVisitor parentVisitor)
     : base(parentVisitor)
 {
 }
示例#7
0
 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)));
 }
示例#11
0
 public BlockVisitorBase(EncoderVisitor parentVisitor)
     : base(parentVisitor)
 {
 }
示例#12
0
 public InlineBlockVisitor(EncoderVisitor parentVisitor)
     : base(parentVisitor)
 {
     this._Context = new InlineBlockCompilationContext(this.ParentVisitor.Context);
 }