Move resowner from common JitContext to LLVM specific
Only the LLVM specific code uses it since resource owners were made extensible in commit b8bff07daa85c837a2747b4d35cd5a27e73fb7b2. This is new in v17, so backpatch there to keep the branches from diverging just yet. Author: Andreas Karlsson <andreas@proxel.se> Discussion: https://www.postgresql.org/message-id/fd3a2a00-6605-4e30-a118-48418b478e6e@proxel.se
This commit is contained in:
parent
3a137ab7e5
commit
5784a493f1
@ -249,7 +249,7 @@ llvm_create_context(int jitFlags)
|
|||||||
context->base.flags = jitFlags;
|
context->base.flags = jitFlags;
|
||||||
|
|
||||||
/* ensure cleanup */
|
/* ensure cleanup */
|
||||||
context->base.resowner = CurrentResourceOwner;
|
context->resowner = CurrentResourceOwner;
|
||||||
ResourceOwnerRememberJIT(CurrentResourceOwner, context);
|
ResourceOwnerRememberJIT(CurrentResourceOwner, context);
|
||||||
|
|
||||||
llvm_jit_context_in_use_count++;
|
llvm_jit_context_in_use_count++;
|
||||||
@ -323,8 +323,8 @@ llvm_release_context(JitContext *context)
|
|||||||
|
|
||||||
llvm_leave_fatal_on_oom();
|
llvm_leave_fatal_on_oom();
|
||||||
|
|
||||||
if (context->resowner)
|
if (llvm_jit_context->resowner)
|
||||||
ResourceOwnerForgetJIT(context->resowner, llvm_jit_context);
|
ResourceOwnerForgetJIT(llvm_jit_context->resowner, llvm_jit_context);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1377,8 +1377,8 @@ llvm_error_message(LLVMErrorRef error)
|
|||||||
static void
|
static void
|
||||||
ResOwnerReleaseJitContext(Datum res)
|
ResOwnerReleaseJitContext(Datum res)
|
||||||
{
|
{
|
||||||
JitContext *context = (JitContext *) DatumGetPointer(res);
|
LLVMJitContext *context = (LLVMJitContext *) DatumGetPointer(res);
|
||||||
|
|
||||||
context->resowner = NULL;
|
context->resowner = NULL;
|
||||||
jit_release_context(context);
|
jit_release_context(&context->base);
|
||||||
}
|
}
|
||||||
|
@ -59,8 +59,6 @@ typedef struct JitContext
|
|||||||
/* see PGJIT_* above */
|
/* see PGJIT_* above */
|
||||||
int flags;
|
int flags;
|
||||||
|
|
||||||
ResourceOwner resowner;
|
|
||||||
|
|
||||||
JitInstrumentation instr;
|
JitInstrumentation instr;
|
||||||
} JitContext;
|
} JitContext;
|
||||||
|
|
||||||
|
@ -39,6 +39,9 @@ typedef struct LLVMJitContext
|
|||||||
{
|
{
|
||||||
JitContext base;
|
JitContext base;
|
||||||
|
|
||||||
|
/* used to ensure cleanup of context */
|
||||||
|
ResourceOwner resowner;
|
||||||
|
|
||||||
/* number of modules created */
|
/* number of modules created */
|
||||||
size_t module_generation;
|
size_t module_generation;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user