diff options
author | Andres Freund <andres@anarazel.de> | 2018-02-05 09:09:28 -0800 |
---|---|---|
committer | Andres Freund <andres@anarazel.de> | 2018-03-22 14:45:59 -0700 |
commit | fb46ac26fe493839d6cf3ab8d20bc62a285f7649 (patch) | |
tree | 6ff4b12827210cabc2ba0a3df0ff91aaf0023d1c /src/backend/jit/llvm/llvmjit.c | |
parent | feb8254518752b2cb4a8964c374dd82d49ef0e0d (diff) | |
download | postgresql-fb46ac26fe493839d6cf3ab8d20bc62a285f7649.tar.gz postgresql-fb46ac26fe493839d6cf3ab8d20bc62a285f7649.zip |
Expand list of synchronized types and functions in LLVM JIT provider.
Author: Andres Freund
Discussion: https://postgr.es/m/20170901064131.tazjxwus3k2w3ybh@alap3.anarazel.de
Diffstat (limited to 'src/backend/jit/llvm/llvmjit.c')
-rw-r--r-- | src/backend/jit/llvm/llvmjit.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/backend/jit/llvm/llvmjit.c b/src/backend/jit/llvm/llvmjit.c index 8cf8aaaa3a1..eaede90cca0 100644 --- a/src/backend/jit/llvm/llvmjit.c +++ b/src/backend/jit/llvm/llvmjit.c @@ -45,9 +45,38 @@ typedef struct LLVMJitHandle /* types & functions commonly needed for JITing */ LLVMTypeRef TypeSizeT; +LLVMTypeRef TypePGFunction; +LLVMTypeRef StructHeapTupleFieldsField3; +LLVMTypeRef StructHeapTupleFields; +LLVMTypeRef StructHeapTupleHeaderData; +LLVMTypeRef StructHeapTupleDataChoice; +LLVMTypeRef StructHeapTupleData; +LLVMTypeRef StructMinimalTupleData; +LLVMTypeRef StructItemPointerData; +LLVMTypeRef StructBlockId; +LLVMTypeRef StructFormPgAttribute; +LLVMTypeRef StructTupleConstr; +LLVMTypeRef StructtupleDesc; +LLVMTypeRef StructTupleTableSlot; +LLVMTypeRef StructMemoryContextData; +LLVMTypeRef StructPGFinfoRecord; +LLVMTypeRef StructFmgrInfo; +LLVMTypeRef StructFunctionCallInfoData; +LLVMTypeRef StructExprContext; +LLVMTypeRef StructExprEvalStep; +LLVMTypeRef StructExprState; +LLVMTypeRef StructAggState; +LLVMTypeRef StructAggStatePerGroupData; +LLVMTypeRef StructAggStatePerTransData; LLVMValueRef AttributeTemplate; LLVMValueRef FuncStrlen; +LLVMValueRef FuncSlotGetsomeattrs; +LLVMValueRef FuncHeapGetsysattr; +LLVMValueRef FuncMakeExpandedObjectReadOnlyInternal; +LLVMValueRef FuncExecEvalArrayRefSubscript; +LLVMValueRef FuncExecAggTransReparent; +LLVMValueRef FuncExecAggInitGroup; static bool llvm_session_initialized = false; @@ -647,9 +676,27 @@ llvm_create_types(void) llvm_layout = pstrdup(LLVMGetDataLayoutStr(mod)); TypeSizeT = load_type(mod, "TypeSizeT"); + TypePGFunction = load_type(mod, "TypePGFunction"); + StructExprContext = load_type(mod, "StructExprContext"); + StructExprEvalStep = load_type(mod, "StructExprEvalStep"); + StructExprState = load_type(mod, "StructExprState"); + StructFunctionCallInfoData = load_type(mod, "StructFunctionCallInfoData"); + StructMemoryContextData = load_type(mod, "StructMemoryContextData"); + StructTupleTableSlot = load_type(mod, "StructTupleTableSlot"); + StructHeapTupleData = load_type(mod, "StructHeapTupleData"); + StructtupleDesc = load_type(mod, "StructtupleDesc"); + StructAggState = load_type(mod, "StructAggState"); + StructAggStatePerGroupData = load_type(mod, "StructAggStatePerGroupData"); + StructAggStatePerTransData = load_type(mod, "StructAggStatePerTransData"); AttributeTemplate = LLVMGetNamedFunction(mod, "AttributeTemplate"); FuncStrlen = LLVMGetNamedFunction(mod, "strlen"); + FuncSlotGetsomeattrs = LLVMGetNamedFunction(mod, "slot_getsomeattrs"); + FuncHeapGetsysattr = LLVMGetNamedFunction(mod, "heap_getsysattr"); + FuncMakeExpandedObjectReadOnlyInternal = LLVMGetNamedFunction(mod, "MakeExpandedObjectReadOnlyInternal"); + FuncExecEvalArrayRefSubscript = LLVMGetNamedFunction(mod, "ExecEvalArrayRefSubscript"); + FuncExecAggTransReparent = LLVMGetNamedFunction(mod, "ExecAggTransReparent"); + FuncExecAggInitGroup = LLVMGetNamedFunction(mod, "ExecAggInitGroup"); /* * Leave the module alive, otherwise references to function would be |