Move resowner from common JitContext to LLVM specific

Only the LLVM specific code uses it since resource owners were made
extensible in commit b8bff07daa. 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
pull/183/head
Heikki Linnakangas 2 years ago
parent 935fe79ea1
commit b0a8a7ddd3
  1. 10
      src/backend/jit/llvm/llvmjit.c
  2. 2
      src/include/jit/jit.h
  3. 3
      src/include/jit/llvmjit.h

@ -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);
}
/*
@ -1372,8 +1372,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);
}

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

@ -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;

Loading…
Cancel
Save