From 5784a493f14e02ece767aec7b4d3ed96e16a3a20 Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas Date: Fri, 19 Jul 2024 10:27:06 +0300 Subject: [PATCH] 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 Discussion: https://www.postgresql.org/message-id/fd3a2a00-6605-4e30-a118-48418b478e6e@proxel.se --- src/backend/jit/llvm/llvmjit.c | 10 +++++----- src/include/jit/jit.h | 2 -- src/include/jit/llvmjit.h | 3 +++ 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/backend/jit/llvm/llvmjit.c b/src/backend/jit/llvm/llvmjit.c index 0bafe309bb..0f6cec5249 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); } /* @@ -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); } diff --git a/src/include/jit/jit.h b/src/include/jit/jit.h index b7a1eed281..d9a080ce98 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 9d9db80662..420775b189 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;