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
 | 
						|
 |