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:
Heikki Linnakangas 2024-07-19 10:27:06 +03:00
parent 3a137ab7e5
commit 5784a493f1
3 changed files with 8 additions and 7 deletions

View File

@ -249,7 +249,7 @@ llvm_create_context(int jitFlags)
context->base.flags = jitFlags;
/* ensure cleanup */
context->base.resowner = CurrentResourceOwner;
context->resowner = CurrentResourceOwner;
ResourceOwnerRememberJIT(CurrentResourceOwner, context);
llvm_jit_context_in_use_count++;
@ -323,8 +323,8 @@ llvm_release_context(JitContext *context)
llvm_leave_fatal_on_oom();
if (context->resowner)
ResourceOwnerForgetJIT(context->resowner, llvm_jit_context);
if (llvm_jit_context->resowner)
ResourceOwnerForgetJIT(llvm_jit_context->resowner, llvm_jit_context);
}
/*
@ -1377,8 +1377,8 @@ llvm_error_message(LLVMErrorRef error)
static void
ResOwnerReleaseJitContext(Datum res)
{
JitContext *context = (JitContext *) DatumGetPointer(res);
LLVMJitContext *context = (LLVMJitContext *) DatumGetPointer(res);
context->resowner = NULL;
jit_release_context(context);
jit_release_context(&context->base);
}

View File

@ -59,8 +59,6 @@ typedef struct JitContext
/* see PGJIT_* above */
int flags;
ResourceOwner resowner;
JitInstrumentation instr;
} JitContext;

View File

@ -39,6 +39,9 @@ typedef struct LLVMJitContext
{
JitContext base;
/* used to ensure cleanup of context */
ResourceOwner resowner;
/* number of modules created */
size_t module_generation;