예제 #1
0
        internal override void Compile(IBuildContext ctx, int expressionId)
        {
            ctx.MarkSequencePointFor(expressionId);
            var local = ctx.GetLocal(_variable);

            if (_loadAddress)
            {
                EmitLocalAddress(ctx, local);
            }
            else
            {
                EmitLocalValue(ctx, local);
            }
        }
 internal override void Compile(IBuildContext ctx, int expressionId)
 {
     ctx.Compile(_value);
     ctx.MarkSequencePointFor(expressionId);
     EmitWriteLocal(ctx, ctx.GetLocal(_variable));
 }
예제 #3
0
 internal override void Compile(IBuildContext ctx, int expressionId)
 {
     if (_exceptionVariable == null)
     {
         ctx.Generator.Emit(OpCodes.Pop);
     }
     else
     {
         var local = _declareVariable ? ctx.DeclareLocal(_exceptionVariable) : ctx.GetLocal(_exceptionVariable);
         LocalWriteExpression.EmitWriteLocal(ctx, local);
     }
 }