55 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
| //===-------- OrcCBindingsStack.cpp - Orc JIT stack for C bindings --------===//
 | |
| //
 | |
| //                     The LLVM Compiler Infrastructure
 | |
| //
 | |
| // This file is distributed under the University of Illinois Open Source
 | |
| // License. See LICENSE.TXT for details.
 | |
| //
 | |
| //===----------------------------------------------------------------------===//
 | |
| 
 | |
| #include "OrcCBindingsStack.h"
 | |
| 
 | |
| #include "llvm/ExecutionEngine/Orc/OrcArchitectureSupport.h"
 | |
| #include "llvm/Support/Debug.h"
 | |
| #include "llvm/Support/DynamicLibrary.h"
 | |
| #include <cstdio>
 | |
| #include <system_error>
 | |
| 
 | |
| using namespace llvm;
 | |
| 
 | |
| std::unique_ptr<OrcCBindingsStack::CompileCallbackMgr>
 | |
| OrcCBindingsStack::createCompileCallbackMgr(Triple T) {
 | |
|   switch (T.getArch()) {
 | |
|     default: return nullptr;
 | |
| 
 | |
|     case Triple::x86: {
 | |
|       typedef orc::LocalJITCompileCallbackManager<orc::OrcI386> CCMgrT;
 | |
|       return llvm::make_unique<CCMgrT>(0);
 | |
|     };
 | |
| 
 | |
|     case Triple::x86_64: {
 | |
|       typedef orc::LocalJITCompileCallbackManager<orc::OrcX86_64> CCMgrT;
 | |
|       return llvm::make_unique<CCMgrT>(0);
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| OrcCBindingsStack::IndirectStubsManagerBuilder
 | |
| OrcCBindingsStack::createIndirectStubsMgrBuilder(Triple T) {
 | |
|   switch (T.getArch()) {
 | |
|     default: return nullptr;
 | |
| 
 | |
|     case Triple::x86:
 | |
|       return [](){
 | |
|         return llvm::make_unique<
 | |
|                  orc::LocalIndirectStubsManager<orc::OrcI386>>();
 | |
|       };
 | |
| 
 | |
|     case Triple::x86_64:
 | |
|       return [](){
 | |
|         return llvm::make_unique<
 | |
|                  orc::LocalIndirectStubsManager<orc::OrcX86_64>>();
 | |
|       };
 | |
|   }
 | |
| }
 |