61 lines
1.3 KiB
C++
61 lines
1.3 KiB
C++
|
|
#include "JIT_Compiler.hpp"
|
|
|
|
using namespace std;
|
|
|
|
#pragma GCC diagnostic push
|
|
#pragma GCC diagnostic ignored "-Wimplicit-function-declaration"
|
|
|
|
extern "C" void Yap_InitJitAnalysisPreds(void);
|
|
extern "C" void Yap_InitJitTransformPreds(void);
|
|
extern "C" void Yap_InitJitCodegenPreds(void);
|
|
extern "C" void Yap_InitJitConfigPreds(void);
|
|
#if YAP_STAT_PREDS
|
|
extern "C" void Yap_InitJitStatisticPreds(void);
|
|
#endif
|
|
#if YAP_DBG_PREDS
|
|
extern "C" void Yap_InitJitDebugPreds(void);
|
|
#endif
|
|
|
|
// global variables with intercae
|
|
extern "C" void* (*Yap_JitCall)(JIT_Compiler* jc, yamop* p);
|
|
extern "C" void (* Yap_llvmShutdown)( ) ;
|
|
extern "C" Int (* Yap_traced_absmi)( ) ;
|
|
|
|
void init_jit();
|
|
|
|
extern "C" void* call_JIT_Compiler(JIT_Compiler* jc, yamop* p) {
|
|
return jc->compile(p); }
|
|
|
|
extern "C" void shutdown_llvm() { llvm_shutdown(); }
|
|
|
|
extern "C" Int traced_absmi();
|
|
|
|
#define JIT_CODE 1
|
|
|
|
static void
|
|
initJit(void)
|
|
{
|
|
Yap_InitJitAnalysisPreds();
|
|
Yap_InitJitTransformPreds();
|
|
Yap_InitJitCodegenPreds();
|
|
Yap_InitJitConfigPreds();
|
|
#if YAP_STAT_PREDS
|
|
Yap_InitJitStatisticPreds();
|
|
#endif
|
|
#if YAP_DBG_PREDS
|
|
Yap_InitJitDebugPreds();
|
|
#endif
|
|
Yap_JitCall = call_JIT_Compiler;
|
|
Yap_llvmShutdown = llvm_shutdown;
|
|
Yap_traced_absmi = traced_absmi;
|
|
}
|
|
|
|
// export JIT as DLL
|
|
void
|
|
init_jit() {
|
|
initJit();
|
|
}
|
|
#pragma GCC diagnostic pop
|
|
|