mirror of
https://github.com/postgres/postgres.git
synced 2025-08-11 04:22:52 +03:00
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
This commit is contained in:
@@ -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;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user