99
1010#include " llvmcompilercontext.h"
1111#include " llvmcoroutine.h"
12+ #include " llvmtypes.h"
1213
1314using namespace libscratchcpp ;
1415
@@ -18,10 +19,16 @@ LLVMCompilerContext::LLVMCompilerContext(IEngine *engine, Target *target) :
1819 m_module(std::make_unique<llvm::Module>(target ? target->name () : "", *m_llvmCtx)),
1920 m_llvmCtxPtr(m_llvmCtx.get()),
2021 m_modulePtr(m_module.get()),
21- m_jit((initTarget(), llvm::orc::LLJITBuilder().create())),
22- m_llvmCoroResumeFunction(createCoroResumeFunction()),
23- m_llvmCoroDestroyFunction(createCoroDestroyFunction())
22+ m_jit((initTarget(), llvm::orc::LLJITBuilder().create()))
2423{
24+ // Create functions
25+ m_llvmCoroResumeFunction = createCoroResumeFunction ();
26+ m_llvmCoroDestroyFunction = createCoroDestroyFunction ();
27+
28+ // Create types
29+ m_valueDataType = LLVMTypes::createValueDataType (*m_llvmCtx);
30+ m_stringPtrType = LLVMTypes::createStringPtrType (*m_llvmCtx);
31+
2532 if (!m_jit) {
2633 llvm::errs () << " error: failed to create JIT: " << toString (m_jit.takeError ()) << " \n " ;
2734 return ;
@@ -129,6 +136,16 @@ void LLVMCompilerContext::destroyCoroutine(void *handle)
129136 m_coroDestroyFunction (handle);
130137}
131138
139+ llvm::StructType *LLVMCompilerContext::valueDataType () const
140+ {
141+ return m_valueDataType;
142+ }
143+
144+ llvm::StructType *LLVMCompilerContext::stringPtrType () const
145+ {
146+ return m_stringPtrType;
147+ }
148+
132149void LLVMCompilerContext::initTarget ()
133150{
134151 llvm::InitializeNativeTarget ();
0 commit comments