CompilerHelper.cpp
1 #include "CompilerHelper.h" 2 3 #include "preprocessor/llvm_includes_start.h" 4 #include <llvm/IR/Module.h> 5 #include "preprocessor/llvm_includes_end.h" 6 7 #include "RuntimeManager.h" 8 9 namespace dev 10 { 11 namespace eth 12 { 13 namespace jit 14 { 15 16 CompilerHelper::CompilerHelper(IRBuilder& _builder) : 17 m_builder(_builder) 18 {} 19 20 llvm::Module* CompilerHelper::getModule() 21 { 22 assert(m_builder.GetInsertBlock()); 23 assert(m_builder.GetInsertBlock()->getParent()); // BB must be in a function 24 return m_builder.GetInsertBlock()->getParent()->getParent(); 25 } 26 27 llvm::Function* CompilerHelper::getMainFunction() 28 { 29 // TODO: Rename or change semantics of getMainFunction() function 30 assert(m_builder.GetInsertBlock()); 31 auto mainFunc = m_builder.GetInsertBlock()->getParent(); 32 assert(mainFunc); 33 if (mainFunc == &mainFunc->getParent()->getFunctionList().front()) // Main function is the first one in module 34 return mainFunc; 35 return nullptr; 36 } 37 38 39 RuntimeHelper::RuntimeHelper(RuntimeManager& _runtimeManager): 40 CompilerHelper(_runtimeManager.m_builder), 41 m_runtimeManager(_runtimeManager) 42 {} 43 44 } 45 } 46 }