|
hoshi-lang dev
Yet another programming language
|

Public Member Functions | |
| LLVMModuleContext (const std::shared_ptr< IRModule > &yoiModule, yoi::indexT hash, const yoi::wstr &absolute_path) | |
Public Attributes | ||
| std::unique_ptr< llvm::LLVMContext > | TheContext | |
| yoi::wstr | absolute_path | |
| std::unique_ptr< llvm::Module > | TheModule | |
| std::unique_ptr< llvm::IRBuilder<> > | Builder | |
| std::unique_ptr< llvm::DIBuilder > | DBuilder | |
| std::map< yoi::wstr, llvm::Function * > | runtimeFunctions | |
| std::map< yoi::wstr, llvm::DICompileUnit * > | compileUnits | |
| std::map< yoi::wstr, llvm::DIType * > | basicDITypeMap | |
| llvm::GlobalVariable * | noneObjectSingleton = nullptr | |
| llvm::GlobalVariable * | RTTITable = nullptr | |
| llvm::StructType * | RTTIEntryType = nullptr | |
| ValueStackWithPhi | valueStackPhi | |
| llvm::Function * | currentFunction = nullptr | |
| llvm::Value * | currentGeneratorContextValue = nullptr | |
| struct { | ||
| llvm::BasicBlock * resumeBB {} | ||
| llvm::BasicBlock * cleanupBB {} | ||
| llvm::BasicBlock * suspendBB {} | ||
| } | currentGeneratorContextBasicBlocks | |
| std::shared_ptr< yoi::IRFunctionDefinition > | currentFunctionDef | |
| std::map< yoi::indexT, llvm::AllocaInst * > | namedValues | |
| std::map< yoi::indexT, llvm::BasicBlock * > | basicBlockMap | |
| std::map< yoi::indexT, bool > | basicBlockVisited | |
| std::map< yoi::indexT, llvm::GlobalVariable * > | globalValues | |
| std::map< yoi::wstr, llvm::Function * > | functionMap | |
| std::map< std::tuple< yoi::IRValueType::valueType, yoi::indexT, yoi::indexT >, llvm::StructType * > | structTypeMap | |
| std::map< std::tuple< yoi::IRValueType::valueType, yoi::indexT, yoi::indexT >, llvm::Type * > | foreignTypeMap | |
| std::map< std::tuple< yoi::IRValueType::valueType, yoi::indexT, yoi::indexT, yoi::indexT >, llvm::StructType * > | arrayTypeMap | |
| std::map< std::tuple< yoi::IRValueType::valueType, yoi::indexT, yoi::indexT, yoi::indexT >, llvm::DIType * > | arrayDataRegionDITypeMap | |
| std::map< std::tuple< yoi::IRValueType::valueType, yoi::indexT, yoi::indexT >, llvm::DIType * > | structTypeDIMap | |
| std::map< std::tuple< yoi::IRValueType::valueType, yoi::indexT, yoi::indexT, yoi::indexT >, llvm::DIType * > | arrayTypeDIMap | |
| std::map< yoi::indexT, llvm::DIType * > | dataStructDataRegionTypeDIMap | |
| std::map< std::tuple< yoi::IRValueType::valueType, yoi::indexT, yoi::indexT, yoi::indexT >, yoi::indexT > | typeIDMap | |
| yoi::vec< std::tuple< std::shared_ptr< IRValueType >, llvm::StructType *, llvm::Type * > > | arrayToGenerateImplementations | |
| std::map< yoi::indexT, llvm::StructType * > | dataStructDataRegionMap | |
| ControlFlowAnalysis | controlFlowAnalysis | |
| yoi::indexT | nextTypeId | |
Definition at line 105 of file llvmCodegenContext.hpp.
| LLVMModuleContext | ( | const std::shared_ptr< IRModule > & | yoiModule, |
| yoi::indexT | hash, | ||
| const yoi::wstr & | absolute_path | ||
| ) |
Definition at line 4433 of file llvmCodegenContext.cpp.
| yoi::wstr absolute_path |
Definition at line 108 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::generateFunctionImplementations(), and LLVMCodegen::generateGlobalInitializers().
| std::map<std::tuple<yoi::IRValueType::valueType, yoi::indexT, yoi::indexT, yoi::indexT>, llvm::DIType *> arrayDataRegionDITypeMap |
Definition at line 149 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::getDIType().
| yoi::vec<std::tuple<std::shared_ptr<IRValueType>, llvm::StructType *, llvm::Type *> > arrayToGenerateImplementations |
Definition at line 161 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::getArrayLLVMType().
| std::map<std::tuple<yoi::IRValueType::valueType, yoi::indexT, yoi::indexT, yoi::indexT>, llvm::DIType *> arrayTypeDIMap |
Definition at line 155 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::getDIType().
| std::map<std::tuple<yoi::IRValueType::valueType, yoi::indexT, yoi::indexT, yoi::indexT>, llvm::StructType *> arrayTypeMap |
Definition at line 146 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::createDynamicArrayObject(), LLVMCodegen::generateInstruction(), LLVMCodegen::getArrayLLVMType(), and LLVMCodegen::handleForeignTypeConv().
| std::map<yoi::indexT, llvm::BasicBlock *> basicBlockMap |
Definition at line 132 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::generateCodeBlock(), LLVMCodegen::generateFunction(), and LLVMCodegen::generateInstruction().
| std::map<yoi::indexT, bool> basicBlockVisited |
Definition at line 133 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::generateCodeBlock(), and LLVMCodegen::generateFunction().
| std::map<yoi::wstr, llvm::DIType *> basicDITypeMap |
Definition at line 114 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::getDIType().
| std::unique_ptr<llvm::IRBuilder<> > Builder |
Definition at line 110 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::actualizeInterfaceObject(), LLVMCodegen::callGcFunction(), LLVMCodegen::createArrayObject(), LLVMCodegen::createBasicObject(), LLVMCodegen::createDynamicArrayObject(), LLVMCodegen::createGeneratorContext(), LLVMCodegen::createStructObject(), LLVMCodegen::declareRuntimeFunctions(), LLVMCodegen::generateArrayGCFunctionDeclarations(), LLVMCodegen::generateArrayGCFunctionImplementations(), LLVMCodegen::generateBasicTypeDeclarations(), LLVMCodegen::generateBasicTypeImplementations(), LLVMCodegen::generateCodeBlock(), LLVMCodegen::generateDataStructDeclarations(), LLVMCodegen::generateExportFunctionDecls(), LLVMCodegen::generateFunction(), LLVMCodegen::generateFunctionExitCleanup(), LLVMCodegen::generateGeneratorContextInitialization(), LLVMCodegen::generateIfTargetNotNull(), LLVMCodegen::generateImportFunctionImplementations(), LLVMCodegen::generateInstruction(), LLVMCodegen::generateInterfaceObjectGCFunctionDeclarations(), LLVMCodegen::generateInterfaceObjectGCFunctionImplementations(), LLVMCodegen::generateMainFunction(), LLVMCodegen::generateRTTIImplmentation(), LLVMCodegen::generateRuntimeFunctionImplementations(), LLVMCodegen::generateStructDeclarations(), LLVMCodegen::generateStructGCFunctionDeclarations(), LLVMCodegen::generateStructGCFunctionImplementations(), LLVMCodegen::handleBinaryOp(), LLVMCodegen::handleComparison(), LLVMCodegen::handleForeignTypeConv(), LLVMCodegen::handleForeignTypeConv(), LLVMCodegen::handleIntrinsicCall(), LLVMCodegen::loadArrayElement(), LLVMCodegen::loadIfDataStructObject(), LLVMCodegen::storeArrayElement(), LLVMCodegen::storeMember(), LLVMCodegen::unboxValue(), LLVMCodegen::unwrapInterfaceObject(), and LLVMCodegen::yoiTypeToLLVMType().
| llvm::BasicBlock* cleanupBB {} |
Definition at line 127 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::generateFunction(), LLVMCodegen::generateGeneratorContextInitialization(), and LLVMCodegen::generateInstruction().
| std::map<yoi::wstr, llvm::DICompileUnit *> compileUnits |
Definition at line 113 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::declareRuntimeFunctions(), LLVMCodegen::generateFunction(), and LLVMCodegen::getDIType().
| ControlFlowAnalysis controlFlowAnalysis |
Definition at line 164 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::generateCodeBlock(), and LLVMCodegen::generateFunction().
| llvm::Function* currentFunction = nullptr |
Definition at line 123 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::generateCodeBlock(), LLVMCodegen::generateFunction(), LLVMCodegen::generateGeneratorContextInitialization(), and LLVMCodegen::generateInstruction().
| std::shared_ptr<yoi::IRFunctionDefinition> currentFunctionDef |
Definition at line 130 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::createGeneratorContext(), LLVMCodegen::generateCodeBlock(), LLVMCodegen::generateFunctionExitCleanup(), LLVMCodegen::generateFunctionImplementations(), LLVMCodegen::generateGeneratorContextInitialization(), LLVMCodegen::generateInstruction(), and LLVMCodegen::storeYieldValue().
| struct { ... } currentGeneratorContextBasicBlocks |
| llvm::Value* currentGeneratorContextValue = nullptr |
Definition at line 124 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::generateGeneratorContextInitialization(), and LLVMCodegen::storeYieldValue().
| std::map<yoi::indexT, llvm::StructType *> dataStructDataRegionMap |
Definition at line 162 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::generateDataStructDeclarations(), LLVMCodegen::generateDataStructShallowDeclarations(), LLVMCodegen::generateInstruction(), LLVMCodegen::getDIType(), LLVMCodegen::loadIfDataStructObject(), LLVMCodegen::storeMember(), and LLVMCodegen::yoiTypeToLLVMType().
| std::map<yoi::indexT, llvm::DIType *> dataStructDataRegionTypeDIMap |
Definition at line 156 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::getDIType().
| std::unique_ptr<llvm::DIBuilder> DBuilder |
Definition at line 111 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::declareRuntimeFunctions(), LLVMCodegen::generate(), LLVMCodegen::generateFunction(), and LLVMCodegen::getDIType().
| std::map<std::tuple<yoi::IRValueType::valueType, yoi::indexT, yoi::indexT>, llvm::Type *> foreignTypeMap |
Definition at line 143 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::generateBasicTypeDeclarations(), LLVMCodegen::generateForeignStructTypes(), LLVMCodegen::handleForeignTypeConv(), and LLVMCodegen::yoiTypeToLLVMType().
| std::map<yoi::wstr, llvm::Function *> functionMap |
Definition at line 137 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::actualizeInterfaceObject(), LLVMCodegen::generateArrayGCFunctionDeclarations(), LLVMCodegen::generateArrayGCFunctionImplementations(), LLVMCodegen::generateBasicTypeDeclarations(), LLVMCodegen::generateBasicTypeImplementations(), LLVMCodegen::generateExportFunctionDecls(), LLVMCodegen::generateFunction(), LLVMCodegen::generateFunctionDeclarations(), LLVMCodegen::generateImportFunctionDeclarations(), LLVMCodegen::generateImportFunctionImplementations(), LLVMCodegen::generateInstruction(), LLVMCodegen::generateInterfaceObjectGCFunctionDeclarations(), LLVMCodegen::generateInterfaceObjectGCFunctionImplementations(), LLVMCodegen::generateMainFunction(), LLVMCodegen::generateStructGCFunctionDeclarations(), LLVMCodegen::generateStructGCFunctionImplementations(), and LLVMCodegen::getGcFunction().
| std::map<yoi::indexT, llvm::GlobalVariable *> globalValues |
Definition at line 136 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::generateGlobalDeclarations(), LLVMCodegen::generateGlobalInitializers(), and LLVMCodegen::generateInstruction().
| std::map<yoi::indexT, llvm::AllocaInst *> namedValues |
Definition at line 131 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::generateFunction(), LLVMCodegen::generateFunctionExitCleanup(), LLVMCodegen::generateGeneratorContextInitialization(), and LLVMCodegen::generateInstruction().
| yoi::indexT nextTypeId |
Definition at line 166 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::generateBasicTypeDeclarations(), LLVMCodegen::generateDataStructShallowDeclarations(), LLVMCodegen::generateStructShallowDeclarations(), and LLVMCodegen::getArrayLLVMType().
| llvm::GlobalVariable* noneObjectSingleton = nullptr |
Definition at line 117 of file llvmCodegenContext.hpp.
| llvm::BasicBlock* resumeBB {} |
Definition at line 126 of file llvmCodegenContext.hpp.
| llvm::StructType* RTTIEntryType = nullptr |
Definition at line 119 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::generateRTTIDeclaration(), and LLVMCodegen::generateRTTIImplmentation().
| llvm::GlobalVariable* RTTITable = nullptr |
Definition at line 118 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::generateRTTIDeclaration(), and LLVMCodegen::generateRTTIImplmentation().
| std::map<yoi::wstr, llvm::Function *> runtimeFunctions |
Definition at line 112 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::actualizeInterfaceObject(), LLVMCodegen::createArrayObject(), LLVMCodegen::createBasicObject(), LLVMCodegen::createDynamicArrayObject(), LLVMCodegen::createStructObject(), LLVMCodegen::declareRuntimeFunctions(), LLVMCodegen::generateArrayGCFunctionImplementations(), LLVMCodegen::generateBasicTypeImplementations(), LLVMCodegen::generateFunction(), LLVMCodegen::generateGeneratorContextInitialization(), LLVMCodegen::generateImportFunctionImplementations(), LLVMCodegen::generateInstruction(), LLVMCodegen::generateInterfaceObjectGCFunctionImplementations(), LLVMCodegen::generateMainFunction(), LLVMCodegen::generateRuntimeFunctionImplementations(), and LLVMCodegen::generateStructGCFunctionImplementations().
| std::map<std::tuple<yoi::IRValueType::valueType, yoi::indexT, yoi::indexT>, llvm::DIType *> structTypeDIMap |
Definition at line 152 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::getDIType().
| std::map<std::tuple<yoi::IRValueType::valueType, yoi::indexT, yoi::indexT>, llvm::StructType *> structTypeMap |
Definition at line 140 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::actualizeInterfaceObject(), LLVMCodegen::createBasicObject(), LLVMCodegen::createGeneratorContext(), LLVMCodegen::createStructObject(), LLVMCodegen::generateBasicTypeDeclarations(), LLVMCodegen::generateBasicTypeImplementations(), LLVMCodegen::generateDataStructDeclarations(), LLVMCodegen::generateDataStructShallowDeclarations(), LLVMCodegen::generateInstruction(), LLVMCodegen::generateInterfaceObjectGCFunctionDeclarations(), LLVMCodegen::generateInterfaceObjectGCFunctionImplementations(), LLVMCodegen::generateStructDeclarations(), LLVMCodegen::generateStructGCFunctionDeclarations(), LLVMCodegen::generateStructGCFunctionImplementations(), LLVMCodegen::generateStructShallowDeclarations(), LLVMCodegen::handleForeignTypeConv(), LLVMCodegen::storeMember(), LLVMCodegen::storeYieldValue(), LLVMCodegen::unboxValue(), LLVMCodegen::unwrapInterfaceObject(), and LLVMCodegen::yoiTypeToLLVMType().
| llvm::BasicBlock* suspendBB {} |
Definition at line 128 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::generateFunction(), LLVMCodegen::generateGeneratorContextInitialization(), and LLVMCodegen::generateInstruction().
| std::unique_ptr<llvm::LLVMContext> TheContext |
Definition at line 107 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::actualizeInterfaceObject(), LLVMCodegen::createArrayObject(), LLVMCodegen::createBasicObject(), LLVMCodegen::createDynamicArrayObject(), LLVMCodegen::createGeneratorContext(), LLVMCodegen::createStructObject(), LLVMCodegen::declareRuntimeFunctions(), LLVMCodegen::generateArrayGCFunctionDeclarations(), LLVMCodegen::generateArrayGCFunctionImplementations(), LLVMCodegen::generateBasicTypeDeclarations(), LLVMCodegen::generateBasicTypeImplementations(), LLVMCodegen::generateCodeBlock(), LLVMCodegen::generateDataStructShallowDeclarations(), LLVMCodegen::generateDescription(), LLVMCodegen::generateExportFunctionDecls(), LLVMCodegen::generateForeignStructTypes(), LLVMCodegen::generateFunction(), LLVMCodegen::generateGeneratorContextInitialization(), LLVMCodegen::generateGlobalInitializers(), LLVMCodegen::generateIfTargetNotNull(), LLVMCodegen::generateImportFunctionImplementations(), LLVMCodegen::generateInstruction(), LLVMCodegen::generateInterfaceObjectGCFunctionDeclarations(), LLVMCodegen::generateInterfaceObjectGCFunctionImplementations(), LLVMCodegen::generateMainFunction(), LLVMCodegen::generateRTTIDeclaration(), LLVMCodegen::generateRTTIImplmentation(), LLVMCodegen::generateRuntimeFunctionImplementations(), LLVMCodegen::generateStructDeclarations(), LLVMCodegen::generateStructGCFunctionDeclarations(), LLVMCodegen::generateStructGCFunctionImplementations(), LLVMCodegen::generateStructShallowDeclarations(), LLVMCodegen::getArrayLLVMType(), LLVMCodegen::handleForeignTypeConv(), LLVMCodegen::handleForeignTypeConv(), LLVMCodegen::storeArrayElement(), LLVMCodegen::unwrapInterfaceObject(), and LLVMCodegen::yoiTypeToLLVMType().
| std::unique_ptr<llvm::Module> TheModule |
Definition at line 109 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::actualizeInterfaceObject(), LLVMCodegen::createArrayObject(), LLVMCodegen::createBasicObject(), LLVMCodegen::createDynamicArrayObject(), LLVMCodegen::createStructObject(), LLVMCodegen::declareRuntimeFunctions(), LLVMCodegen::generateArrayGCFunctionDeclarations(), LLVMCodegen::generateBasicTypeDeclarations(), LLVMCodegen::generateBasicTypeImplementations(), LLVMCodegen::generateDescription(), LLVMCodegen::generateExportFunctionDecls(), LLVMCodegen::generateFunction(), LLVMCodegen::generateFunctionDeclarations(), LLVMCodegen::generateGlobalDeclarations(), LLVMCodegen::generateImportFunctionDeclarations(), LLVMCodegen::generateImportFunctionImplementations(), LLVMCodegen::generateInstruction(), LLVMCodegen::generateInterfaceObjectGCFunctionDeclarations(), LLVMCodegen::generateMainFunction(), LLVMCodegen::generateRTTIDeclaration(), LLVMCodegen::generateStructGCFunctionDeclarations(), LLVMCodegen::generateTargetObjectCode(), LLVMCodegen::getDIType(), LLVMCodegen::getLLVMCoroIntrinsic(), LLVMCodegen::getModule(), LLVMCodegen::handleForeignTypeConv(), and LLVMCodegen::storeMember().
| std::map<std::tuple<yoi::IRValueType::valueType, yoi::indexT, yoi::indexT, yoi::indexT>, yoi::indexT> typeIDMap |
Definition at line 159 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::actualizeInterfaceObject(), LLVMCodegen::createArrayObject(), LLVMCodegen::createBasicObject(), LLVMCodegen::createDynamicArrayObject(), LLVMCodegen::createStructObject(), LLVMCodegen::generateBasicTypeDeclarations(), LLVMCodegen::generateDataStructShallowDeclarations(), LLVMCodegen::generateInstruction(), LLVMCodegen::generateRTTIDeclaration(), LLVMCodegen::generateRTTIImplmentation(), LLVMCodegen::generateStructShallowDeclarations(), and LLVMCodegen::getArrayLLVMType().
| ValueStackWithPhi valueStackPhi |
Definition at line 122 of file llvmCodegenContext.hpp.
Referenced by LLVMCodegen::generateCodeBlock(), LLVMCodegen::generateFunction(), LLVMCodegen::generateInstruction(), LLVMCodegen::handleBinaryOp(), LLVMCodegen::handleComparison(), and LLVMCodegen::handleIntrinsicCall().