From 585e4cc35c9d70a6f77c37e507792686edc48815 Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Tue, 25 Jun 2024 11:14:06 -0400 Subject: [PATCH] xo-jit: + MachPipeline::xsession() --- include/xo/jit/MachPipeline.hpp | 4 ++++ src/jit/MachPipeline.cpp | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/include/xo/jit/MachPipeline.hpp b/include/xo/jit/MachPipeline.hpp index 49be235d..3e475e92 100644 --- a/include/xo/jit/MachPipeline.hpp +++ b/include/xo/jit/MachPipeline.hpp @@ -43,6 +43,7 @@ #include "llvm/Transforms/Scalar/GVN.h" #include "llvm/Transforms/Scalar/Reassociate.h" #include "llvm/Transforms/Scalar/SimplifyCFG.h" +#include namespace xo { @@ -57,6 +58,7 @@ namespace xo { using Expression = xo::ast::Expression; using Lambda = xo::ast::Lambda; using TypeDescr = xo::reflect::TypeDescr; + using ExecutionSession = llvm::orc::ExecutionSession; using DataLayout = llvm::DataLayout; //using ConstantInterface = xo::ast::ConstantInterface; @@ -73,6 +75,8 @@ namespace xo { /** target triple = string describing target host for codegen **/ const std::string & target_triple() const; + /** execution session (run jit-generated machine code in this process) **/ + const ExecutionSession * xsession() const; /** data layout = rules for alignment/padding; specific to target host **/ const DataLayout & data_layout() const; /** append function names defined in attached module to *p_v diff --git a/src/jit/MachPipeline.cpp b/src/jit/MachPipeline.cpp index 88037393..5f13c371 100644 --- a/src/jit/MachPipeline.cpp +++ b/src/jit/MachPipeline.cpp @@ -17,6 +17,7 @@ namespace xo { using xo::reflect::Reflect; using xo::reflect::StructMember; using xo::reflect::TypeDescr; + using llvm::orc::ExecutionSession; using llvm::DataLayout; using std::cerr; using std::endl; @@ -96,6 +97,11 @@ namespace xo { ir_pipeline_ = new IrPipeline(llvm_cx_); } /*recreate_llvm_ir_pipeline*/ + const ExecutionSession * + MachPipeline::xsession() const { + return this->jit_->xsession(); + } + /** identifies target host/architecture for machine code. * e.g. "x86_64-unknown-linux-gnu" **/