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;