Cosmos/source/Indy.IL2CPU.IL/CustomMethodImplementationOp.cs

75 lines
4.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Mono.Cecil.Cil;
namespace Indy.IL2CPU.IL {
public enum CustomMethodEnum {
System_Void___System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray___System_Array__System_RuntimeFieldHandle___,
System_Object___System_Array_GetValue___System_Int32___,
System_Void___System_Array_SetValue___System_Object__System_Int32___,
System_UInt32___Indy_IL2CPU_CustomImplementation_System_StringImpl_GetStorage___System_UInt32___,
System_Void___Indy_IL2CPU_RuntimeEngine_Heap_Initialize____,
System_Void___Indy_IL2CPU_RuntimeEngine_Heap_Shutdown____,
System_UInt32___Indy_IL2CPU_RuntimeEngine_Heap_AllocNewObject___System_UInt32___,
System_Void___Indy_IL2CPU_RuntimeEngine_ExitProcess___System_Int32___,
System_Int32_System_Array_get_Length____
}
public abstract class CustomMethodImplementationOp: Op {
public MethodInformation MethodInfo;
public CustomMethodImplementationOp(Instruction aInstruction, MethodInformation aMethodInfo)
: base(aInstruction, aMethodInfo) {
MethodInfo = aMethodInfo;
}
public CustomMethodEnum Method {
get;
set;
}
protected abstract void Assemble_System_Void___System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray___System_Array__System_RuntimeFieldHandle___();
protected abstract void Assemble_System_Object___System_Array_GetValue___System_Int32___();
protected abstract void Assemble_System_Void___System_Array_SetValue___System_Object__System_Int32___();
protected abstract void Assemble_System_UInt32___Indy_IL2CPU_CustomImplementation_System_StringImpl_GetStorage___System_UInt32___();
public sealed override void DoAssemble() {
switch (Method) {
case CustomMethodEnum.System_Void___System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray___System_Array__System_RuntimeFieldHandle___:
Assemble_System_Void___System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray___System_Array__System_RuntimeFieldHandle___();
break;
case CustomMethodEnum.System_Object___System_Array_GetValue___System_Int32___:
Assemble_System_Object___System_Array_GetValue___System_Int32___();
break;
case CustomMethodEnum.System_Void___System_Array_SetValue___System_Object__System_Int32___:
Assemble_System_Void___System_Array_SetValue___System_Object__System_Int32___();
break;
case CustomMethodEnum.System_UInt32___Indy_IL2CPU_CustomImplementation_System_StringImpl_GetStorage___System_UInt32___:
Assemble_System_UInt32___Indy_IL2CPU_CustomImplementation_System_StringImpl_GetStorage___System_UInt32___();
break;
case CustomMethodEnum.System_Void___Indy_IL2CPU_RuntimeEngine_Heap_Initialize____:
Assemble_System_Void___Indy_IL2CPU_RuntimeEngine_Heap_Initialize____();
break;
case CustomMethodEnum.System_Void___Indy_IL2CPU_RuntimeEngine_Heap_Shutdown____:
Assemble_System_Void___Indy_IL2CPU_RuntimeEngine_Heap_Shutdown____();
break;
case CustomMethodEnum.System_UInt32___Indy_IL2CPU_RuntimeEngine_Heap_AllocNewObject___System_UInt32___:
Assemble_System_UInt32___Indy_IL2CPU_RuntimeEngine_Heap_AllocNewObject___System_UInt32___();
break;
case CustomMethodEnum.System_Void___Indy_IL2CPU_RuntimeEngine_ExitProcess___System_Int32___:
Assemble_System_Void___Indy_IL2CPU_RuntimeEngine_ExitProcess___System_Int32___();
break;
case CustomMethodEnum.System_Int32_System_Array_get_Length____:
Assemble_System_Int32_System_Array_get_Length____();
break;
default:
throw new Exception("Method not handled: '" + Method + "'!");
}
}
protected abstract void Assemble_System_UInt32___Indy_IL2CPU_RuntimeEngine_Heap_AllocNewObject___System_UInt32___();
protected abstract void Assemble_System_Void___Indy_IL2CPU_RuntimeEngine_Heap_Shutdown____();
protected abstract void Assemble_System_Void___Indy_IL2CPU_RuntimeEngine_Heap_Initialize____();
protected abstract void Assemble_System_Void___Indy_IL2CPU_RuntimeEngine_ExitProcess___System_Int32___();
protected abstract void Assemble_System_Int32_System_Array_get_Length____();
}
}