12e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen/*===-- llvm-c/ExecutionEngine.h - ExecutionEngine Lib C Iface --*- C++ -*-===*\ 22e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen|* *| 32e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen|* The LLVM Compiler Infrastructure *| 42e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen|* *| 57ed47a13356daed2a34cd2209a31f92552e3bdd8Chris Lattner|* This file is distributed under the University of Illinois Open Source *| 67ed47a13356daed2a34cd2209a31f92552e3bdd8Chris Lattner|* License. See LICENSE.TXT for details. *| 72e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen|* *| 82e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen|*===----------------------------------------------------------------------===*| 92e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen|* *| 102e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen|* This header declares the C interface to libLLVMExecutionEngine.o, which *| 112e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen|* implements various analyses of the LLVM IR. *| 122e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen|* *| 132e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen|* Many exotic languages can interoperate with C code but have a harder time *| 142e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen|* with C++ due to name mangling. So in addition to C, this interface enables *| 152e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen|* tools written in such languages. *| 162e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen|* *| 172e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen\*===----------------------------------------------------------------------===*/ 182e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen 192e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen#ifndef LLVM_C_EXECUTIONENGINE_H 202e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen#define LLVM_C_EXECUTIONENGINE_H 212e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen 222e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen#include "llvm-c/Core.h" 237c1483bc6f009318ce66c4d37d1ba930e01a6d13Erick Tryzelaar#include "llvm-c/Target.h" 240e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlo#include "llvm-c/TargetMachine.h" 252e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen 262e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen#ifdef __cplusplus 272e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksenextern "C" { 282e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen#endif 292e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen 306244b518880842f2c15200ee041e06799e4cc779Gregory Szorc/** 316244b518880842f2c15200ee041e06799e4cc779Gregory Szorc * @defgroup LLVMCExecutionEngine Execution Engine 326244b518880842f2c15200ee041e06799e4cc779Gregory Szorc * @ingroup LLVMC 336244b518880842f2c15200ee041e06799e4cc779Gregory Szorc * 346244b518880842f2c15200ee041e06799e4cc779Gregory Szorc * @{ 356244b518880842f2c15200ee041e06799e4cc779Gregory Szorc */ 366244b518880842f2c15200ee041e06799e4cc779Gregory Szorc 37e46161f10c3e0c640b22e446b873df8b01413f52Bob Wilsonvoid LLVMLinkInJIT(void); 38d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylorvoid LLVMLinkInMCJIT(void); 39e46161f10c3e0c640b22e446b873df8b01413f52Bob Wilsonvoid LLVMLinkInInterpreter(void); 40e46161f10c3e0c640b22e446b873df8b01413f52Bob Wilson 412e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksentypedef struct LLVMOpaqueGenericValue *LLVMGenericValueRef; 422e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksentypedef struct LLVMOpaqueExecutionEngine *LLVMExecutionEngineRef; 436cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlotypedef struct LLVMOpaqueMCJITMemoryManager *LLVMMCJITMemoryManagerRef; 442e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen 45d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylorstruct LLVMMCJITCompilerOptions { 46d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor unsigned OptLevel; 470e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlo LLVMCodeModel CodeModel; 48d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor LLVMBool NoFramePointerElim; 490e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlo LLVMBool EnableFastISel; 506cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo LLVMMCJITMemoryManagerRef MCJMM; 51d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor}; 52d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor 532e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen/*===-- Operations on generic values --------------------------------------===*/ 542e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen 552e855e68d861224c9b61e2bc9cecad1536b1534bGordon HenriksenLLVMGenericValueRef LLVMCreateGenericValueOfInt(LLVMTypeRef Ty, 562e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen unsigned long long N, 57d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMBool IsSigned); 582e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen 592e855e68d861224c9b61e2bc9cecad1536b1534bGordon HenriksenLLVMGenericValueRef LLVMCreateGenericValueOfPointer(void *P); 602e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen 612e855e68d861224c9b61e2bc9cecad1536b1534bGordon HenriksenLLVMGenericValueRef LLVMCreateGenericValueOfFloat(LLVMTypeRef Ty, double N); 622e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen 632e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksenunsigned LLVMGenericValueIntWidth(LLVMGenericValueRef GenValRef); 642e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen 652e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksenunsigned long long LLVMGenericValueToInt(LLVMGenericValueRef GenVal, 66d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMBool IsSigned); 672e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen 682e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksenvoid *LLVMGenericValueToPointer(LLVMGenericValueRef GenVal); 692e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen 702e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksendouble LLVMGenericValueToFloat(LLVMTypeRef TyRef, LLVMGenericValueRef GenVal); 712e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen 722e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksenvoid LLVMDisposeGenericValue(LLVMGenericValueRef GenVal); 732e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen 742e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen/*===-- Operations on execution engines -----------------------------------===*/ 752e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen 76df7df075b723e926e51555bf5aff6e231279a479Erick TryzelaarLLVMBool LLVMCreateExecutionEngineForModule(LLVMExecutionEngineRef *OutEE, 77df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar LLVMModuleRef M, 78df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar char **OutError); 79df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar 80df7df075b723e926e51555bf5aff6e231279a479Erick TryzelaarLLVMBool LLVMCreateInterpreterForModule(LLVMExecutionEngineRef *OutInterp, 81df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar LLVMModuleRef M, 82df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar char **OutError); 83df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar 84df7df075b723e926e51555bf5aff6e231279a479Erick TryzelaarLLVMBool LLVMCreateJITCompilerForModule(LLVMExecutionEngineRef *OutJIT, 85df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar LLVMModuleRef M, 86df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar unsigned OptLevel, 87df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar char **OutError); 88df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar 890e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlovoid LLVMInitializeMCJITCompilerOptions( 900e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlo struct LLVMMCJITCompilerOptions *Options, size_t SizeOfOptions); 910e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlo 92d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor/** 93d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor * Create an MCJIT execution engine for a module, with the given options. It is 94d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor * the responsibility of the caller to ensure that all fields in Options up to 950e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlo * the given SizeOfOptions are initialized. It is correct to pass a smaller 960e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlo * value of SizeOfOptions that omits some fields. The canonical way of using 970e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlo * this is: 98d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor * 99d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor * LLVMMCJITCompilerOptions options; 1000e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlo * LLVMInitializeMCJITCompilerOptions(&options, sizeof(options)); 101d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor * ... fill in those options you care about 1020e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlo * LLVMCreateMCJITCompilerForModule(&jit, mod, &options, sizeof(options), 1030e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlo * &error); 104d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor * 105d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor * Note that this is also correct, though possibly suboptimal: 106d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor * 107d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor * LLVMCreateMCJITCompilerForModule(&jit, mod, 0, 0, &error); 108d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor */ 1090e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip PizloLLVMBool LLVMCreateMCJITCompilerForModule( 1100e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlo LLVMExecutionEngineRef *OutJIT, LLVMModuleRef M, 1110e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlo struct LLVMMCJITCompilerOptions *Options, size_t SizeOfOptions, 1120e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlo char **OutError); 113d2755af8bda2e0fd80efb46556485c4cdbe8704aAndrew Kaylor 114df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar/** Deprecated: Use LLVMCreateExecutionEngineForModule instead. */ 115d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMCreateExecutionEngine(LLVMExecutionEngineRef *OutEE, 116d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMModuleProviderRef MP, 117d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner char **OutError); 1182e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen 119df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar/** Deprecated: Use LLVMCreateInterpreterForModule instead. */ 120d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMCreateInterpreter(LLVMExecutionEngineRef *OutInterp, 121d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMModuleProviderRef MP, 122d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner char **OutError); 1232e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen 124df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar/** Deprecated: Use LLVMCreateJITCompilerForModule instead. */ 125d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMCreateJITCompiler(LLVMExecutionEngineRef *OutJIT, 126d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMModuleProviderRef MP, 127d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner unsigned OptLevel, 128d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner char **OutError); 1292e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen 1302e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksenvoid LLVMDisposeExecutionEngine(LLVMExecutionEngineRef EE); 1312e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen 1322e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksenvoid LLVMRunStaticConstructors(LLVMExecutionEngineRef EE); 1332e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen 1342e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksenvoid LLVMRunStaticDestructors(LLVMExecutionEngineRef EE); 1352e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen 1362e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksenint LLVMRunFunctionAsMain(LLVMExecutionEngineRef EE, LLVMValueRef F, 1372e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen unsigned ArgC, const char * const *ArgV, 1382e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen const char * const *EnvP); 1392e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen 1402e855e68d861224c9b61e2bc9cecad1536b1534bGordon HenriksenLLVMGenericValueRef LLVMRunFunction(LLVMExecutionEngineRef EE, LLVMValueRef F, 1412e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen unsigned NumArgs, 1422e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen LLVMGenericValueRef *Args); 1432e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen 1442e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksenvoid LLVMFreeMachineCodeForFunction(LLVMExecutionEngineRef EE, LLVMValueRef F); 1452e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen 146df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaarvoid LLVMAddModule(LLVMExecutionEngineRef EE, LLVMModuleRef M); 147df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar 148df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar/** Deprecated: Use LLVMAddModule instead. */ 1492e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksenvoid LLVMAddModuleProvider(LLVMExecutionEngineRef EE, LLVMModuleProviderRef MP); 1502e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen 151df7df075b723e926e51555bf5aff6e231279a479Erick TryzelaarLLVMBool LLVMRemoveModule(LLVMExecutionEngineRef EE, LLVMModuleRef M, 152df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar LLVMModuleRef *OutMod, char **OutError); 153df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar 154df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar/** Deprecated: Use LLVMRemoveModule instead. */ 155d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMRemoveModuleProvider(LLVMExecutionEngineRef EE, 156d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMModuleProviderRef MP, 157d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMModuleRef *OutMod, char **OutError); 1582e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen 159d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMFindFunction(LLVMExecutionEngineRef EE, const char *Name, 160d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMValueRef *OutFn); 1612e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen 1620e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlovoid *LLVMRecompileAndRelinkFunction(LLVMExecutionEngineRef EE, 1630e1327e4aa1426aaa3f99a2cbfcb1f2b575791adFilip Pizlo LLVMValueRef Fn); 164d90fee9b4205c92786c8ae6fa574624b8d157f1cDuncan Sands 1657c1483bc6f009318ce66c4d37d1ba930e01a6d13Erick TryzelaarLLVMTargetDataRef LLVMGetExecutionEngineTargetData(LLVMExecutionEngineRef EE); 16636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen HinesLLVMTargetMachineRef 16736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen HinesLLVMGetExecutionEngineTargetMachine(LLVMExecutionEngineRef EE); 1687c1483bc6f009318ce66c4d37d1ba930e01a6d13Erick Tryzelaar 16954227f6752befd3196e078b83e4c440ecaff2dd7Gordon Henriksenvoid LLVMAddGlobalMapping(LLVMExecutionEngineRef EE, LLVMValueRef Global, 17054227f6752befd3196e078b83e4c440ecaff2dd7Gordon Henriksen void* Addr); 17154227f6752befd3196e078b83e4c440ecaff2dd7Gordon Henriksen 1721e42c5bdf50b54e33afa840b5dbb2d7c7d861a44Chris Lattnervoid *LLVMGetPointerToGlobal(LLVMExecutionEngineRef EE, LLVMValueRef Global); 1731e42c5bdf50b54e33afa840b5dbb2d7c7d861a44Chris Lattner 1746cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo/*===-- Operations on memory managers -------------------------------------===*/ 1756cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo 1766eb43d295625cd2ff314c59b49d4fd11f3348cadFilip Pizlotypedef uint8_t *(*LLVMMemoryManagerAllocateCodeSectionCallback)( 1776eb43d295625cd2ff314c59b49d4fd11f3348cadFilip Pizlo void *Opaque, uintptr_t Size, unsigned Alignment, unsigned SectionID, 1786eb43d295625cd2ff314c59b49d4fd11f3348cadFilip Pizlo const char *SectionName); 1796eb43d295625cd2ff314c59b49d4fd11f3348cadFilip Pizlotypedef uint8_t *(*LLVMMemoryManagerAllocateDataSectionCallback)( 1806eb43d295625cd2ff314c59b49d4fd11f3348cadFilip Pizlo void *Opaque, uintptr_t Size, unsigned Alignment, unsigned SectionID, 1816eb43d295625cd2ff314c59b49d4fd11f3348cadFilip Pizlo const char *SectionName, LLVMBool IsReadOnly); 1826eb43d295625cd2ff314c59b49d4fd11f3348cadFilip Pizlotypedef LLVMBool (*LLVMMemoryManagerFinalizeMemoryCallback)( 1836eb43d295625cd2ff314c59b49d4fd11f3348cadFilip Pizlo void *Opaque, char **ErrMsg); 1845be81238f0683d0533f747124aa420e4e79440b1Anders Waldenborgtypedef void (*LLVMMemoryManagerDestroyCallback)(void *Opaque); 1855be81238f0683d0533f747124aa420e4e79440b1Anders Waldenborg 1866cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo/** 1876cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo * Create a simple custom MCJIT memory manager. This memory manager can 1886cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo * intercept allocations in a module-oblivious way. This will return NULL 1896cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo * if any of the passed functions are NULL. 1906cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo * 1916cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo * @param Opaque An opaque client object to pass back to the callbacks. 1926cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo * @param AllocateCodeSection Allocate a block of memory for executable code. 1936cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo * @param AllocateDataSection Allocate a block of memory for data. 1946cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo * @param FinalizeMemory Set page permissions and flush cache. Return 0 on 1956cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo * success, 1 on error. 1966cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo */ 1976cfed36338d7728076ddbc1331908b887a4302d3Filip PizloLLVMMCJITMemoryManagerRef LLVMCreateSimpleMCJITMemoryManager( 1986cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo void *Opaque, 1995be81238f0683d0533f747124aa420e4e79440b1Anders Waldenborg LLVMMemoryManagerAllocateCodeSectionCallback AllocateCodeSection, 2005be81238f0683d0533f747124aa420e4e79440b1Anders Waldenborg LLVMMemoryManagerAllocateDataSectionCallback AllocateDataSection, 2015be81238f0683d0533f747124aa420e4e79440b1Anders Waldenborg LLVMMemoryManagerFinalizeMemoryCallback FinalizeMemory, 202135fe6ac5f5b80ef68c19b3ec7bb0063e28f2babBenjamin Kramer LLVMMemoryManagerDestroyCallback Destroy); 2036cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo 2046cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlovoid LLVMDisposeMCJITMemoryManager(LLVMMCJITMemoryManagerRef MM); 2056cfed36338d7728076ddbc1331908b887a4302d3Filip Pizlo 2066244b518880842f2c15200ee041e06799e4cc779Gregory Szorc/** 2076244b518880842f2c15200ee041e06799e4cc779Gregory Szorc * @} 2086244b518880842f2c15200ee041e06799e4cc779Gregory Szorc */ 2096244b518880842f2c15200ee041e06799e4cc779Gregory Szorc 2102e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen#ifdef __cplusplus 211e21c3137e1dfcd9644d3870a0a4528374375271fNAKAMURA Takumi} 2129313da5a90838c7242101dae250e86dcfc708e6aEvan Cheng#endif /* defined(__cplusplus) */ 2132e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen 2142e855e68d861224c9b61e2bc9cecad1536b1534bGordon Henriksen#endif 215