xo-jit: + Jit::intern_symbol()

This commit is contained in:
Roland Conybeare 2024-06-19 18:22:53 -04:00
commit ba39b6366d
2 changed files with 14 additions and 0 deletions

View file

@ -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());

View file

@ -1,6 +1,7 @@
/* @file MachPipeline.cpp */
#include "MachPipeline.hpp"
#include <string>
namespace xo {
using xo::ast::exprtype;