aboutsummaryrefslogtreecommitdiff
path: root/ARMeilleure/Translation/Compiler.cs
diff options
context:
space:
mode:
Diffstat (limited to 'ARMeilleure/Translation/Compiler.cs')
-rw-r--r--ARMeilleure/Translation/Compiler.cs23
1 files changed, 12 insertions, 11 deletions
diff --git a/ARMeilleure/Translation/Compiler.cs b/ARMeilleure/Translation/Compiler.cs
index 4075a7f0..c2a2c746 100644
--- a/ARMeilleure/Translation/Compiler.cs
+++ b/ARMeilleure/Translation/Compiler.cs
@@ -9,11 +9,16 @@ namespace ARMeilleure.Translation
{
static class Compiler
{
- public static T Compile<T>(
- ControlFlowGraph cfg,
- OperandType[] funcArgTypes,
- OperandType funcReturnType,
- CompilerOptions options)
+ public static T Compile<T>(ControlFlowGraph cfg, OperandType[] argTypes, OperandType retType, CompilerOptions options)
+ {
+ CompiledFunction func = CompileAndGetCf(cfg, argTypes, retType, options);
+
+ IntPtr codePtr = JitCache.Map(func);
+
+ return Marshal.GetDelegateForFunctionPointer<T>(codePtr);
+ }
+
+ public static CompiledFunction CompileAndGetCf(ControlFlowGraph cfg, OperandType[] argTypes, OperandType retType, CompilerOptions options)
{
Logger.StartPass(PassName.Dominance);
@@ -35,13 +40,9 @@ namespace ARMeilleure.Translation
Logger.EndPass(PassName.SsaConstruction, cfg);
- CompilerContext cctx = new CompilerContext(cfg, funcArgTypes, funcReturnType, options);
-
- CompiledFunction func = CodeGenerator.Generate(cctx);
+ CompilerContext cctx = new CompilerContext(cfg, argTypes, retType, options);
- IntPtr codePtr = JitCache.Map(func);
-
- return Marshal.GetDelegateForFunctionPointer<T>(codePtr);
+ return CodeGenerator.Generate(cctx);
}
}
} \ No newline at end of file