sammine-lang
Loading...
Searching...
No Matches
SammineJIT.h
Go to the documentation of this file.
1//
2// Created by Jasmine Tang on 3/29/24.
3//
4
5#ifndef SAMMINE_LANG_SAMMINEJIT_H
6#define SAMMINE_LANG_SAMMINEJIT_H
7
8#include "llvm/ADT/StringRef.h"
9#include "llvm/ExecutionEngine/Orc/Core.h" // Core utilities such as ExecutionSession and JITDylib.
10#include "llvm/ExecutionEngine/Orc/IRCompileLayer.h"
11#include "llvm/ExecutionEngine/Orc/JITTargetMachineBuilder.h"
12#include "llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h"
13#include "llvm/IR/DataLayout.h"
14#include "llvm/IR/LLVMContext.h"
15namespace sammine_lang {
16
19class SammineJIT {
20private:
21 std::unique_ptr<llvm::orc::ExecutionSession> ES;
22 llvm::orc::RTDyldObjectLinkingLayer ObjectLayer;
23 llvm::orc::IRCompileLayer CompileLayer;
24
25 llvm::DataLayout DL;
26 llvm::orc::MangleAndInterner Mangle;
27 llvm::orc::JITDylib &MainJD;
28
29public:
30 SammineJIT(std::unique_ptr<llvm::orc::ExecutionSession> ES,
31 llvm::orc::JITTargetMachineBuilder JTMB, llvm::DataLayout DL);
32
33 ~SammineJIT();
34
35 static llvm::Expected<std::unique_ptr<SammineJIT>> Create();
36
37 const llvm::DataLayout &getDataLayout() const { return DL; }
38
39 llvm::orc::JITDylib &getMainJITDylib() { return MainJD; }
40
41 llvm::Error addModule(llvm::orc::ThreadSafeModule TSM,
42 llvm::orc::ResourceTrackerSP RT = nullptr);
43
44 llvm::Expected<llvm::orc::ExecutorSymbolDef> lookup(llvm::StringRef Name) {
45 return ES->lookup({&MainJD}, Mangle(Name.str()));
46 }
47};
48
49} // namespace sammine_lang
50#endif // SAMMINE_LANG_SAMMINEJIT_H