<div dir="ltr">Hi Kavon,<div><br></div><div>Unfortunately we don't have a good way to do this at the moment, short of maintaining multiple execution sessions (analogous to the way you maintained multiple ExecutionEngines).</div><div><br></div><div>I am working on initializer/destructor support that will allow us to perform the equivalent of dlopen/dlclose on JITDylibs. Once that support is available I think it would be a good fit for your use case. Unfortunately I think it is still a few months away.</div><div><br></div><div>Cheers,</div><div>Lang.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Aug 19, 2019 at 3:38 PM Kavon Farvardin via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div style="text-align:left;direction:ltr;word-wrap:break-word;line-break:after-white-space"><div>Hi,</div><div><br></div><div>I'm working on a runtime autotuner that utilizes ORCv2 JIT (I'm closely tracking tip-of-tree), so linking new object files and patching in the new function(s) will happen frequently. </div><div><br></div><div>One of the concerns my runtime system has is the ability to do one of the following: (1) replacement of the contents of a JITDylib with a new object file [to provide semi-space GC-style reclaiming], (2) the outright removal of a JITDylib.</div><div><br></div><div>Right now, I have one ExecutionSession instance for my linker and am creating a new JITDylib for each object file that I'd like to link in. There doesn't appear to be a corresponding ExecutionSession::removeJITDylib(..) method, so I'm wondering: how do I reclaim the memory for code that I've linked in previously but no longer need?</div><div><br></div><div>When using MCJIT, I would reclaim this memory by destroying the ExecutionEngine that was created for each "JITDylib". Should I do the same with ExecutionSessions?</div><div><br></div><div>For reference, here's the short bit of code I'm playing with for linking with ORC: </div><div><a href="https://github.com/halo-project/llvm/blob/master/compiler-rt/lib/halomon/DynamicLinker.h#L55" target="_blank">https://github.com/halo-project/llvm/blob/master/compiler-rt/lib/halomon/DynamicLinker.h#L55</a></div><div><br></div><div>Thanks,</div><div>Kavon</div></div>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div>