コード例 #1
0
        public override void RenderIL_LoadAddress(ILCanvas canvas, ILValue target, ILValue index)
        {
            target.RenderIL_Load(canvas);
            index.RenderIL_Load(canvas);

            canvas.Emit_Ldelema(GetElementType());
        }
コード例 #2
0
        public override void RenderIL_Load(ILCanvas canvas, ILValue target, ILValue index)
        {
            target.RenderIL_Load(canvas);
            index.RenderIL_Load(canvas);

            canvas.Emit_Ldelem_I4();
        }
コード例 #3
0
        public override void EmitCast(ILCanvas canvas, ILValue value)
        {
            value.RenderIL_Load(canvas);

            canvas.Emit_Unbox_Any(GetDestinationType().GetElementType());
            canvas.MakeAddressImmediate(GetDestinationType().GetElementType());
        }
コード例 #4
0
        public override void RenderIL_Load(ILCanvas canvas)
        {
            value.RenderIL_Load(canvas);

            canvas.Emit_Isinst(check_type);

            canvas.Emit_Ldnull();
            canvas.Emit_Cneq();
        }
コード例 #5
0
        public override void RenderIL_Load(ILCanvas canvas)
        {
            caller.RenderIL_Load(canvas);

            arguments.GetILImplicitCasts(constructor.GetEffectiveParameterTypes())
            .RenderIL_Load(canvas);

            canvas.Emit_Call(constructor);
        }
コード例 #6
0
        public override void RenderIL_Execute(ILCanvas canvas)
        {
            value.RenderIL_Load(canvas);

            if (value.GetValueType().IsVoidType() == false)
            {
                canvas.Emit_Pop();
            }
        }
コード例 #7
0
        public override void RenderIL_Store(ILCanvas canvas, ILValue target, ILValue index, ILValue value)
        {
            target.RenderIL_Load(canvas);
            index.RenderIL_Load(canvas);

            value.GetILImplicitCast(GetElementType())
            .RenderIL_Load(canvas);

            canvas.Emit_Stelem_I4();
        }
コード例 #8
0
        public void RenderIL_Initialize(ILCanvas canvas)
        {
            if (is_initialized)
            {
                throw new InvalidOperationException("Locals should only be initialized once.");
            }

            if (initial_value != null)
            {
                initial_value.RenderIL_Load(canvas);
                RenderIL_StoreImmediateInternal(canvas);
            }

            is_initialized = true;
        }
コード例 #9
0
        public override void EmitCast(ILCanvas canvas, ILValue value)
        {
            value.RenderIL_Load(canvas);

            canvas.Emit_Call(method);
        }
コード例 #10
0
        public override void EmitCast(ILCanvas canvas, ILValue value)
        {
            value.RenderIL_Load(canvas);

            canvas.Emit_Unbox_Any(GetDestinationType());
        }
コード例 #11
0
        public override void EmitCast(ILCanvas canvas, ILValue value)
        {
            value.RenderIL_Load(canvas);

            canvas.Emit_Conv_R8();
        }
コード例 #12
0
 static public void RenderIL_LoadAddressInternal(this ILValue item, ILCanvas canvas)
 {
     item.RenderIL_Load(canvas);
     canvas.MakeAddressImmediate(item.GetValueType());
 }
コード例 #13
0
 public override void RenderIL_Execute(ILCanvas canvas)
 {
     value.RenderIL_Load(canvas);
     canvas.Emit_Throw();
 }
コード例 #14
0
        public override void EmitCast(ILCanvas canvas, ILValue value)
        {
            value.RenderIL_Load(canvas);

            canvas.Emit_Box(GetSourceType());
        }
コード例 #15
0
        public override void EmitCast(ILCanvas canvas, ILValue value)
        {
            value.RenderIL_Load(canvas);

            new ILDefault(GetDestinationType()).RenderIL_Load(canvas);
        }
コード例 #16
0
        public override void RenderIL_Load(ILCanvas canvas)
        {
            value.RenderIL_Load(canvas);

            canvas.Emit_Isinst(destination_type);
        }
コード例 #17
0
 public override void RenderIL_Execute(ILCanvas canvas)
 {
     value.RenderIL_Load(canvas);
 }
コード例 #18
0
        public override void RenderIL_Load(ILCanvas canvas)
        {
            size.RenderIL_Load(canvas);

            canvas.Emit_Newarr(element_type);
        }
コード例 #19
0
        public override void RenderIL_Store(ILCanvas canvas, ILValue value)
        {
            value.RenderIL_Load(canvas);

            RenderIL_StoreImmediate(canvas);
        }