/
githubmirror
/
postgres
Обзор
Документация
Войти
/
githubmirror
/
postgres
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/backend/jit/llvm/llvmjit_wrap.cpp
66 строк
2 KB
Bruce Momjian
Update copyright for 2026
01 янв 2026, 21:24
01 янв 2026, 21:24
451c439
Код
Авторство
О чём код?
/*------------------------------------------------------------------------- * * llvmjit_wrap.cpp * Parts of the LLVM interface not (yet) exposed to C. * * Copyright (c) 2016-2026, PostgreSQL Global Development Group * * IDENTIFICATION * src/backend/lib/llvm/llvmjit_wrap.cpp * *------------------------------------------------------------------------- */ extern "C" { #include "postgres.h" } #include <llvm-c/Core.h> #include <llvm/IR/Function.h> #include "jit/llvmjit.h" #include "jit/llvmjit_backport.h" #ifdef USE_LLVM_BACKPORT_SECTION_MEMORY_MANAGER #include <llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h> #include <llvm/ExecutionEngine/SectionMemoryManager.h> #include "jit/SectionMemoryManager.h" #include <llvm/Support/CBindingWrapping.h> #endif /* * C-API extensions. */ LLVMTypeRef LLVMGetFunctionReturnType(LLVMValueRef r) { return llvm::wrap(llvm::unwrap<llvm::Function>(r)->getReturnType()); } LLVMTypeRef LLVMGetFunctionType(LLVMValueRef r) { return llvm::wrap(llvm::unwrap<llvm::Function>(r)->getFunctionType()); } #ifdef USE_LLVM_BACKPORT_SECTION_MEMORY_MANAGER DEFINE_SIMPLE_CONVERSION_FUNCTIONS(llvm::orc::ExecutionSession, LLVMOrcExecutionSessionRef) DEFINE_SIMPLE_CONVERSION_FUNCTIONS(llvm::orc::ObjectLayer, LLVMOrcObjectLayerRef); LLVMOrcObjectLayerRef LLVMOrcCreateRTDyldObjectLinkingLayerWithSafeSectionMemoryManager(LLVMOrcExecutionSessionRef ES) { #if LLVM_VERSION_MAJOR >= 21 return wrap(new llvm::orc::RTDyldObjectLinkingLayer( *unwrap(ES), [](const llvm::MemoryBuffer&) { return std::make_unique<llvm::backport::SectionMemoryManager>(nullptr, true); })); #else return wrap(new llvm::orc::RTDyldObjectLinkingLayer( *unwrap(ES), [] { return std::make_unique<llvm::backport::SectionMemoryManager>(nullptr, true); })); #endif } #endif