<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Apr 23, 2013 at 11:26 AM, Kaylor, Andrew <span dir="ltr"><<a href="mailto:andrew.kaylor@intel.com" target="_blank">andrew.kaylor@intel.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div lang="EN-US" link="blue" vlink="purple">
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Yes, exactly.  My patch adds a new ObjectCache class which can be registered with MCJIT.  MCJIT will then call this component before attempting to generate
 code to see if it has a cached object image for a given module.  If the ObjectCache has a cached object, MCJIT will skip the code generation step and just perform linking and loading.  If the ObjectCache does not have a cached version MCJIT will generate code
 as usual and then pass the generated object image to the ObjectCache to be cached before MCJIT performs its linking and loading.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">The ObjectCache is going to be offered as an abstract base class only.  Clients will need to implement their own mechanism for identifying modules and storing
 cached images, though I do have a unit test which provides a very simple reference implementation.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">This mechanism is not coupled directly with the ELF format.  It will work with MachO objects as well, to the extent that MachO is supported by MCJIT.</span></p>
</div></div></blockquote><div><br></div><div style>That sounds like a good approach.</div><div style><br></div><div style>Eli</div><div style> </div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div>
<div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="EN-US" link="blue" vlink="purple">
<div><p class="MsoNormal"><span style="color:rgb(80,0,80)">-Andy</span></p><div><div class="h5"><div><div><div><blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<p class="MsoNormal"><u></u></p>
<div>
<div>
<p class="MsoNormal"><br>
-----Original Message-----<br>
From: <a href="mailto:llvmdev-bounces@cs.uiuc.edu" target="_blank">llvmdev-bounces@cs.uiuc.edu</a> [mailto:<a href="mailto:llvmdev-bounces@cs.uiuc.edu" target="_blank">llvmdev-bounces@cs.uiuc.edu</a>] On Behalf Of Dmitri Rubinstein<br>

Sent: Tuesday, April 23, 2013 5:25 AM<br>
To: LLVM Dev<br>
Subject: [LLVMdev] LLVM JIT Questions<br>
<br>
Hi all,<br>
<br>
For my current project I need a couple of informations about JIT. I seen similar questions already, but the answers are a bit older and I hope somebody can provide me a recent information.<br>
<br>
1. In my project I frequently construct LLVM IR, compile it and execute with JIT. Because the constructed IR is often the same (but can vary depending on input data) I would like to cache produced machine code on the disk. There is no JIT API for dumping and
 loading of compiled code.<br>
<br>
Are there any plans to add this feature in the near future ?<br>
<br>
How complex would it be to implement this for somebody who has only experience with LLVM code generation, but no deep knowledge of JIT internals ?<br>
<br>
2. I also need to interface with C-libraries which are either loaded as a shared library or pre-compiled with clang and loaded as BC file.<br>
However, LLVM does not provide a way how to construct function signature compatible with the C-ABI of the specific platform. I know that clang library has internally this information, but I need this functionality without clang.<br>

<br>
Is there any documentation which describes how to do generate C-ABI compatible LLVM functions or code that implements this functionality ?<br>
<br>
Thanks,<br>
<br>
Dmitri<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">
http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">
http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><u></u><u></u></p>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>
</div></div></div>
</div>

</blockquote></div><br></div></div>