/// <summary> /// </summary> /// <param name="llvmWriter"> /// </param> /// <param name="opCode"> /// </param> /// <param name="elementType"> /// </param> /// <param name="length"> /// </param> public static FullyDefinedReference WriteMultiDimArrayAllocationSize( this LlvmWriter llvmWriter, OpCodePart opCode, IType arrayType) { Debug.Assert(arrayType.IsMultiArray, "This is for multi arrays only"); var writer = llvmWriter.Output; writer.WriteLine("; Calculate MultiDim allocation size"); object[] code; IList <object> tokenResolutions; IList <IType> locals; IList <IParameter> parameters; GetCalculationPartOfMultiDimArrayAllocationSizeMethodBody( llvmWriter, arrayType, out code, out tokenResolutions, out locals, out parameters); var constructedMethod = MethodBodyBank.GetMethodDecorator(null, code, tokenResolutions, locals, parameters); // actual write var opCodes = llvmWriter.WriteCustomMethodPart(constructedMethod, null); return(opCodes.Last().Result); }
public static void Register(string methodFullName, object[] code, IList <object> tokenResolutions, IList <IType> locals, IList <IType> parameters) { MethodBodyBank.Register(methodFullName, m => MethodBodyBank.GetMethodDecorator(m, code, tokenResolutions, locals, parameters)); }