Move resowner from common JitContext to LLVM specific
authorHeikki Linnakangas <[email protected]>
Fri, 19 Jul 2024 07:27:06 +0000 (10:27 +0300)
committerHeikki Linnakangas <[email protected]>
Fri, 19 Jul 2024 07:27:54 +0000 (10:27 +0300)
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 <[email protected]>
Discussion: https://www.postgresql.org/message-id/fd3a2a00-6605-4e30-a118-48418b478e6e@proxel.se

src/backend/jit/llvm/llvmjit.c
src/include/jit/jit.h
src/include/jit/llvmjit.h

index 1d439f2455455dfee2c26ca9ee8e5c6c07bda23b..abfe444c7ed555e90e214e1470d82c2f23fe2553 100644 (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);
 }
 
 /*
@@ -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);
 }
index b7a1eed28104b2d10611b89345af493eaafaa228..d9a080ce98f5045917e69d80c5a8daeb42670c52 100644 (file)
@@ -59,8 +59,6 @@ typedef struct JitContext
    /* see PGJIT_* above */
    int         flags;
 
-   ResourceOwner resowner;
-
    JitInstrumentation instr;
 } JitContext;
 
index 9d9db806625df5e756249f536de355cea7385bd0..420775b1899a66138c1df9bc9772b17956cf6689 100644 (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;