xo-jit: + Jit::intern_symbol()
This commit is contained in:
parent
39a8e8aad4
commit
ba39b6366d
2 changed files with 14 additions and 0 deletions
|
|
@ -126,6 +126,19 @@ namespace xo {
|
|||
std::move(ts_module));
|
||||
}
|
||||
|
||||
/** intern @p symbol, binding it to address @p dest **/
|
||||
template <typename T>
|
||||
llvm::Error intern_symbol(const std::string & symbol, T * dest) {
|
||||
llvm::orc::SymbolMap symbol_map;
|
||||
symbol_map[mangler_(symbol)]
|
||||
= llvm::orc::ExecutorSymbolDef(llvm::orc::ExecutorAddr::fromPtr(dest),
|
||||
llvm::JITSymbolFlags());
|
||||
|
||||
auto materializer = llvm::orc::absoluteSymbols(symbol_map);
|
||||
|
||||
return dest_dynamic_lib_.define(materializer);
|
||||
} /*intern_symbol*/
|
||||
|
||||
/** report mangled symbol name **/
|
||||
auto mangle(StringRef name) {
|
||||
return this->mangler_(name.str());
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
/* @file MachPipeline.cpp */
|
||||
|
||||
#include "MachPipeline.hpp"
|
||||
#include <string>
|
||||
|
||||
namespace xo {
|
||||
using xo::ast::exprtype;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue