TriAxis.RunSharp.CodeGen.EmitLdindHelper C# (CSharp) Method

EmitLdindHelper() protected method

protected EmitLdindHelper ( Type type ) : void
type IKVM.Reflection.Type
return void
        protected internal void EmitLdindHelper(Type type)
        {
            OpCode op;

            if (type.IsPrimitive)
            {
                switch (Type.GetTypeCode(type))
                {
                    case TypeCode.SByte:
                    case TypeCode.Boolean:
                        op = OpCodes.Ldind_I1;
                        break;

                    case TypeCode.Byte:
                        op = OpCodes.Ldind_U1;
                        break;

                    case TypeCode.Int16:
                        op = OpCodes.Ldind_I2;
                        break;

                    case TypeCode.UInt16:
                    case TypeCode.Char:
                        op = OpCodes.Ldind_U2;
                        break;

                    case TypeCode.Int32:
                        op = OpCodes.Ldind_I4;
                        break;

                    case TypeCode.UInt32:
                        op = OpCodes.Ldind_U4;
                        break;

                    case TypeCode.Int64:
                    case TypeCode.UInt64:
                        op = OpCodes.Ldind_I8;
                        break;

                    case TypeCode.Single:
                        op = OpCodes.Ldind_R4;
                        break;

                    case TypeCode.Double:
                        op = OpCodes.Ldind_R8;
                        break;

                    default:
                        throw new NotSupportedException();
                }
            }
            else if (type.IsValueType)
            {
                IL.Emit(OpCodes.Ldobj, type);
                return;
            }
            else
                op = OpCodes.Ldind_Ref;

            IL.Emit(op);
        }

Usage Example

Example #1
0
            internal override void EmitGet(CodeGen g)
            {
                g.EmitLdargHelper(index);

                if (IsReference)
                {
                    g.EmitLdindHelper(Type);
                }
            }
All Usage Examples Of TriAxis.RunSharp.CodeGen::EmitLdindHelper