aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>2024-07-19 10:27:06 +0300
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>2024-07-19 10:27:54 +0300
commitb0a8a7ddd3fbfcdd910b3ee8c7fc5e83d421bfeb (patch)
tree031d2d87a7b1a44cc9da2b77e3f8f5c29fe00905
parent935fe79ea1fb76e32807ebc18f46bbbb9b1cf9b2 (diff)
downloadpostgresql-b0a8a7ddd3fbfcdd910b3ee8c7fc5e83d421bfeb.tar.gz
postgresql-b0a8a7ddd3fbfcdd910b3ee8c7fc5e83d421bfeb.zip
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
-rw-r--r--src/backend/jit/llvm/llvmjit.c10
-rw-r--r--src/include/jit/jit.h2
-rw-r--r--src/include/jit/llvmjit.h3
3 files changed, 8 insertions, 7 deletions
diff --git a/src/backend/jit/llvm/llvmjit.c b/src/backend/jit/llvm/llvmjit.c
index 1d439f24554..abfe444c7ed 100644
--- a/src/backend/jit/llvm/llvmjit.c
+++ b/src/backend/jit/llvm/llvmjit.c
@@ -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);
}
diff --git a/src/include/jit/jit.h b/src/include/jit/jit.h
index b7a1eed2810..d9a080ce98f 100644
--- a/src/include/jit/jit.h
+++ b/src/include/jit/jit.h
@@ -59,8 +59,6 @@ typedef struct JitContext
/* see PGJIT_* above */
int flags;
- ResourceOwner resowner;
-
JitInstrumentation instr;
} JitContext;
diff --git a/src/include/jit/llvmjit.h b/src/include/jit/llvmjit.h
index 9d9db806625..420775b1899 100644
--- a/src/include/jit/llvmjit.h
+++ b/src/include/jit/llvmjit.h
@@ -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;