@@ -8,7 +8,7 @@ A thread-safe version of [`Context`](@ref).
88@checked struct ThreadSafeContext
99 ref:: API.LLVMOrcThreadSafeContextRef
1010end
11- Base. unsafe_convert (:: Type{API.LLVMOrcThreadSafeContextRef} , ctx:: ThreadSafeContext ) = ctx. ref
11+ Base. unsafe_convert (:: Type{API.LLVMOrcThreadSafeContextRef} , ctx:: ThreadSafeContext ) = mark_use ( ctx) . ref
1212
1313"""
1414 ThreadSafeContext(; opaque_pointers=nothing)
@@ -19,7 +19,7 @@ Create a new thread-safe context. The behavior of `opaque_pointers` is the same
1919This object needs to be disposed of using [`dispose(::ThreadSafeContext)`](@ref).
2020"""
2121function ThreadSafeContext (; opaque_pointers= nothing )
22- ts_ctx = ThreadSafeContext (API. LLVMOrcCreateNewThreadSafeContext ())
22+ ts_ctx = mark_alloc ( ThreadSafeContext (API. LLVMOrcCreateNewThreadSafeContext () ))
2323 if opaque_pointers != = nothing
2424 opaque_pointers! (context (ts_ctx), opaque_pointers)
2525 end
@@ -58,7 +58,7 @@ Dispose of the thread-safe context, releasing all resources associated with it.
5858"""
5959function dispose (ctx:: ThreadSafeContext )
6060 deactivate (ctx)
61- API. LLVMOrcDisposeThreadSafeContext ( ctx)
61+ mark_dispose ( API. LLVMOrcDisposeThreadSafeContext, ctx)
6262end
6363
6464"""
@@ -95,11 +95,12 @@ function ThreadSafeModule(mod::Module)
9595 mod = context! (context (ts_context ())) do
9696 parse (Module, bitcode)
9797 end
98+ dispose (bitcode)
9899 end
99100 @assert context (mod) == context (ts_context ())
100101
101102 ref = API. LLVMOrcCreateNewThreadSafeModule (mod, ts_context ())
102- tsm = ThreadSafeModule (ref)
103+ tsm = mark_alloc ( ThreadSafeModule (ref) )
103104 mark_dispose (mod)
104105 return tsm
105106end
127128Dispose of the thread-safe module, releasing all resources associated with it.
128129"""
129130function dispose (mod:: ThreadSafeModule )
130- API. LLVMOrcDisposeThreadSafeModule ( mod)
131+ mark_dispose ( API. LLVMOrcDisposeThreadSafeModule, mod)
131132end
132133
133134mutable struct ThreadSafeModuleCallback
0 commit comments