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; } }
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); }
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); }
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); }