Esempio n. 1
0
        public static void Register(ITypeResolver typeResolver)
        {
            // Registering GetHashCode
            var tokenResolutions = new List <object>();

            tokenResolutions.Add(
                new SynthesizedThisMethod(
                    SynthesizedGetSizeMethod.Name,
                    typeResolver.System.System_Object,
                    typeResolver.GetIntTypeByByteSize(LlvmWriter.PointerSize),
                    true));
            tokenResolutions.Add(typeResolver.System.System_Byte.ToPointerType());

            var locals = new List <IType>();

            locals.Add(typeResolver.System.System_Byte.ToPointerType());
            locals.Add(typeResolver.System.System_Int32);
            locals.Add(typeResolver.System.System_Byte.ToPointerType());
            locals.Add(typeResolver.System.System_Int32);
            locals.Add(typeResolver.System.System_Int32);

            var parameters = new List <IParameter>();

            parameters.Add(typeResolver.System.System_Object.ToParameter());

            MethodBodyBank.Register(Name, ByteCode, tokenResolutions, locals, parameters);
        }
 /// <summary>
 /// </summary>
 /// <param name="type">
 /// </param>
 /// <param name="typeResolver">
 /// </param>
 public SynthesizedGetSizeMethod(IType type, ITypeResolver typeResolver)
     : base(Name, type, typeResolver.GetIntTypeByByteSize(LlvmWriter.PointerSize))
 {
     if (type.IsObject || (type.IsInterface && !type.GetInterfaces().Any()))
     {
         IsVirtual = true;
     }
     else
     {
         IsOverride = true;
     }
 }
Esempio n. 3
0
        public static void Register(ITypeResolver typeResolver)
        {
            // Registering GetHashCode
            var tokenResolutions = new List <object>();

            tokenResolutions.Add(
                new SynthesizedThisMethod(
                    SynthesizedGetSizeMethod.Name,
                    typeResolver.System.System_Object,
                    typeResolver.GetIntTypeByByteSize(LlvmWriter.PointerSize),
                    true));
            tokenResolutions.Add(typeResolver.System.System_Byte.ToPointerType());
            tokenResolutions.Add(
                new SynthesizedStaticMethod(
                    string.Empty,
                    typeResolver.System.System_Object,
                    typeResolver.System.System_Byte.ToPointerType(),
                    new[] { typeResolver.System.System_Int32.ToParameter() },
                    (llvmWriter, opCode) => llvmWriter.WriteAllocateMemory(opCode, opCode.OpCodeOperands[0].Result, false)));
            tokenResolutions.Add(
                new SynthesizedStaticMethod(
                    string.Empty,
                    typeResolver.System.System_Object,
                    typeResolver.System.System_Void,
                    new[]
            {
                typeResolver.System.System_Byte.ToPointerType().ToParameter(),
                typeResolver.System.System_Byte.ToPointerType().ToParameter(),
                typeResolver.System.System_Int32.ToParameter()
            },
                    (llvmWriter, opCode) => llvmWriter.WriteMemCopy(
                        opCode.OpCodeOperands[0].Result,
                        opCode.OpCodeOperands[1].Result,
                        opCode.OpCodeOperands[2].Result)));
            tokenResolutions.Add(typeResolver.System.System_Object);

            var locals = new List <IType>();

            locals.Add(typeResolver.System.System_Byte.ToPointerType());
            locals.Add(typeResolver.System.System_Int32);

            var parameters = new List <IParameter>();

            MethodBodyBank.Register(Name, ByteCode, tokenResolutions, locals, parameters);
        }
Esempio n. 4
0
        public static void Register(ITypeResolver typeResolver)
        {
            // Registering GetHashCode
            var tokenResolutions = new List<object>();
            tokenResolutions.Add(
                new SynthesizedThisMethod(
                    SynthesizedGetSizeMethod.Name,
                    typeResolver.System.System_Object,
                    typeResolver.GetIntTypeByByteSize(LlvmWriter.PointerSize),
                    true));
            tokenResolutions.Add(typeResolver.System.System_Byte.ToPointerType());
            tokenResolutions.Add(
                new SynthesizedStaticMethod(
                    string.Empty,
                    typeResolver.System.System_Object,
                    typeResolver.System.System_Byte.ToPointerType(),
                    new[] { typeResolver.System.System_Int32.ToParameter() },
                    (llvmWriter, opCode) => llvmWriter.WriteAllocateMemory(opCode, opCode.OpCodeOperands[0].Result, false)));
            tokenResolutions.Add(
                new SynthesizedStaticMethod(
                    string.Empty,
                    typeResolver.System.System_Object,
                    typeResolver.System.System_Void,
                    new[]
                        {
                            typeResolver.System.System_Byte.ToPointerType().ToParameter(),
                            typeResolver.System.System_Byte.ToPointerType().ToParameter(),
                            typeResolver.System.System_Int32.ToParameter()
                        },
                    (llvmWriter, opCode) => llvmWriter.WriteMemCopy(
                        opCode.OpCodeOperands[0].Result,
                        opCode.OpCodeOperands[1].Result,
                        opCode.OpCodeOperands[2].Result)));
            tokenResolutions.Add(typeResolver.System.System_Object);

            var locals = new List<IType>();
            locals.Add(typeResolver.System.System_Byte.ToPointerType());
            locals.Add(typeResolver.System.System_Int32);

            var parameters = new List<IParameter>();

            MethodBodyBank.Register(Name, ByteCode, tokenResolutions, locals, parameters);
        }
Esempio n. 5
0
        public static void Register(ITypeResolver typeResolver)
        {
            // Registering GetHashCode
            var tokenResolutions = new List<object>();
            tokenResolutions.Add(
                new SynthesizedThisMethod(
                    SynthesizedGetSizeMethod.Name,
                    typeResolver.System.System_Object,
                    typeResolver.GetIntTypeByByteSize(LlvmWriter.PointerSize),
                    true));
            tokenResolutions.Add(typeResolver.System.System_Byte.ToPointerType());

            var locals = new List<IType>();
            locals.Add(typeResolver.System.System_Int32);
            locals.Add(typeResolver.System.System_Int32);
            locals.Add(typeResolver.System.System_Int32);
            locals.Add(typeResolver.System.System_Byte.ToPointerType());

            var parameters = new List<IParameter>();

            MethodBodyBank.Register(Name, ByteCode, tokenResolutions, locals, parameters);
        }