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:06 +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 0bafe309bb6c7217aab66950bfa894f7d8181df0..0f6cec524960c4aff93f953170fe01f2538fa96f 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);
 }
 
 /*
@@ -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);
 }
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;