Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitfb46ac2

Browse files
committed
Expand list of synchronized types and functions in LLVM JIT provider.
Author: Andres FreundDiscussion:https://postgr.es/m/20170901064131.tazjxwus3k2w3ybh@alap3.anarazel.de
1 parentfeb8254 commitfb46ac2

File tree

3 files changed

+97
-1
lines changed

3 files changed

+97
-1
lines changed

‎src/backend/jit/llvm/llvmjit.c

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,38 @@ typedef struct LLVMJitHandle
4545

4646
/* types & functions commonly needed for JITing */
4747
LLVMTypeRefTypeSizeT;
48+
LLVMTypeRefTypePGFunction;
49+
LLVMTypeRefStructHeapTupleFieldsField3;
50+
LLVMTypeRefStructHeapTupleFields;
51+
LLVMTypeRefStructHeapTupleHeaderData;
52+
LLVMTypeRefStructHeapTupleDataChoice;
53+
LLVMTypeRefStructHeapTupleData;
54+
LLVMTypeRefStructMinimalTupleData;
55+
LLVMTypeRefStructItemPointerData;
56+
LLVMTypeRefStructBlockId;
57+
LLVMTypeRefStructFormPgAttribute;
58+
LLVMTypeRefStructTupleConstr;
59+
LLVMTypeRefStructtupleDesc;
60+
LLVMTypeRefStructTupleTableSlot;
61+
LLVMTypeRefStructMemoryContextData;
62+
LLVMTypeRefStructPGFinfoRecord;
63+
LLVMTypeRefStructFmgrInfo;
64+
LLVMTypeRefStructFunctionCallInfoData;
65+
LLVMTypeRefStructExprContext;
66+
LLVMTypeRefStructExprEvalStep;
67+
LLVMTypeRefStructExprState;
68+
LLVMTypeRefStructAggState;
69+
LLVMTypeRefStructAggStatePerGroupData;
70+
LLVMTypeRefStructAggStatePerTransData;
4871

4972
LLVMValueRefAttributeTemplate;
5073
LLVMValueRefFuncStrlen;
74+
LLVMValueRefFuncSlotGetsomeattrs;
75+
LLVMValueRefFuncHeapGetsysattr;
76+
LLVMValueRefFuncMakeExpandedObjectReadOnlyInternal;
77+
LLVMValueRefFuncExecEvalArrayRefSubscript;
78+
LLVMValueRefFuncExecAggTransReparent;
79+
LLVMValueRefFuncExecAggInitGroup;
5180

5281

5382
staticboolllvm_session_initialized= false;
@@ -647,9 +676,27 @@ llvm_create_types(void)
647676
llvm_layout=pstrdup(LLVMGetDataLayoutStr(mod));
648677

649678
TypeSizeT=load_type(mod,"TypeSizeT");
679+
TypePGFunction=load_type(mod,"TypePGFunction");
680+
StructExprContext=load_type(mod,"StructExprContext");
681+
StructExprEvalStep=load_type(mod,"StructExprEvalStep");
682+
StructExprState=load_type(mod,"StructExprState");
683+
StructFunctionCallInfoData=load_type(mod,"StructFunctionCallInfoData");
684+
StructMemoryContextData=load_type(mod,"StructMemoryContextData");
685+
StructTupleTableSlot=load_type(mod,"StructTupleTableSlot");
686+
StructHeapTupleData=load_type(mod,"StructHeapTupleData");
687+
StructtupleDesc=load_type(mod,"StructtupleDesc");
688+
StructAggState=load_type(mod,"StructAggState");
689+
StructAggStatePerGroupData=load_type(mod,"StructAggStatePerGroupData");
690+
StructAggStatePerTransData=load_type(mod,"StructAggStatePerTransData");
650691

651692
AttributeTemplate=LLVMGetNamedFunction(mod,"AttributeTemplate");
652693
FuncStrlen=LLVMGetNamedFunction(mod,"strlen");
694+
FuncSlotGetsomeattrs=LLVMGetNamedFunction(mod,"slot_getsomeattrs");
695+
FuncHeapGetsysattr=LLVMGetNamedFunction(mod,"heap_getsysattr");
696+
FuncMakeExpandedObjectReadOnlyInternal=LLVMGetNamedFunction(mod,"MakeExpandedObjectReadOnlyInternal");
697+
FuncExecEvalArrayRefSubscript=LLVMGetNamedFunction(mod,"ExecEvalArrayRefSubscript");
698+
FuncExecAggTransReparent=LLVMGetNamedFunction(mod,"ExecAggTransReparent");
699+
FuncExecAggInitGroup=LLVMGetNamedFunction(mod,"ExecAggInitGroup");
653700

654701
/*
655702
* Leave the module alive, otherwise references to function would be

‎src/backend/jit/llvm/llvmjit_types.c

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,39 @@
2626

2727
#include"postgres.h"
2828

29+
#include"access/htup.h"
30+
#include"access/htup_details.h"
31+
#include"access/tupdesc.h"
32+
#include"catalog/pg_attribute.h"
33+
#include"executor/execExpr.h"
34+
#include"executor/nodeAgg.h"
35+
#include"executor/tuptable.h"
2936
#include"fmgr.h"
37+
#include"nodes/execnodes.h"
38+
#include"nodes/memnodes.h"
39+
#include"utils/expandeddatum.h"
40+
#include"utils/palloc.h"
41+
3042

3143
/*
3244
* List of types needed for JITing. These have to be non-static, otherwise
3345
* clang/LLVM will omit them. As this file will never be linked into
3446
* anything, that's harmless.
3547
*/
3648
size_tTypeSizeT;
49+
PGFunctionTypePGFunction;
50+
51+
AggStateStructAggState;
52+
AggStatePerGroupDataStructAggStatePerGroupData;
53+
AggStatePerTransDataStructAggStatePerTransData;
54+
ExprContextStructExprContext;
55+
ExprEvalStepStructExprEvalStep;
56+
ExprStateStructExprState;
57+
FunctionCallInfoDataStructFunctionCallInfoData;
58+
HeapTupleDataStructHeapTupleData;
59+
MemoryContextDataStructMemoryContextData;
60+
TupleTableSlotStructTupleTableSlot;
61+
structtupleDescStructtupleDesc;
3762

3863

3964
/*
@@ -56,5 +81,11 @@ AttributeTemplate(PG_FUNCTION_ARGS)
5681
*/
5782
void*referenced_functions[]=
5883
{
59-
strlen
84+
strlen,
85+
slot_getsomeattrs,
86+
heap_getsysattr,
87+
MakeExpandedObjectReadOnlyInternal,
88+
ExecEvalArrayRefSubscript,
89+
ExecAggTransReparent,
90+
ExecAggInitGroup
6091
};

‎src/include/jit/llvmjit.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,27 @@ typedef struct LLVMJitContext
5656

5757
/* type and struct definitions */
5858
externLLVMTypeRefTypeSizeT;
59+
externLLVMTypeRefTypePGFunction;
60+
externLLVMTypeRefStructtupleDesc;
61+
externLLVMTypeRefStructHeapTupleData;
62+
externLLVMTypeRefStructTupleTableSlot;
63+
externLLVMTypeRefStructMemoryContextData;
64+
externLLVMTypeRefStructFunctionCallInfoData;
65+
externLLVMTypeRefStructExprContext;
66+
externLLVMTypeRefStructExprEvalStep;
67+
externLLVMTypeRefStructExprState;
68+
externLLVMTypeRefStructAggState;
69+
externLLVMTypeRefStructAggStatePerTransData;
70+
externLLVMTypeRefStructAggStatePerGroupData;
5971

6072
externLLVMValueRefAttributeTemplate;
6173
externLLVMValueRefFuncStrlen;
74+
externLLVMValueRefFuncSlotGetsomeattrs;
75+
externLLVMValueRefFuncHeapGetsysattr;
76+
externLLVMValueRefFuncMakeExpandedObjectReadOnlyInternal;
77+
externLLVMValueRefFuncExecEvalArrayRefSubscript;
78+
externLLVMValueRefFuncExecAggTransReparent;
79+
externLLVMValueRefFuncExecAggInitGroup;
6280

6381

6482
externvoidllvm_enter_fatal_on_oom(void);

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp