#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);
// 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();
Yap_InitJitStatisticPreds();
Yap_InitJitDebugPreds();
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