<div dir="ltr">Awesome! <br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, 27 Jun 2019 at 15:17, Gaier, Bjoern <<a href="mailto:Bjoern.Gaier@horiba.com">Bjoern.Gaier@horiba.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">





<div lang="EN-US">
<div class="gmail-m_2545611975355678736WordSection1">
<p class="MsoNormal">Thanks for the input! I was able to write my own Generator function for the JITDylib!<br>
Thank you a lot x3<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"><b>From:</b> Praveen Velliengiri <<a href="mailto:praveenvelliengiri@gmail.com" target="_blank">praveenvelliengiri@gmail.com</a>>
<br>
<b>Sent:</b> Donnerstag, 27. Juni 2019 10:55<br>
<b>To:</b> Gaier, Bjoern <<a href="mailto:Bjoern.Gaier@horiba.com" target="_blank">Bjoern.Gaier@horiba.com</a>><br>
<b>Cc:</b> Lang Hames <<a href="mailto:lhames@gmail.com" target="_blank">lhames@gmail.com</a>>; llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>><br>
<b>Subject:</b> Re: [llvm-dev] Questions about moving from MCJIT to Orc JIT<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">Nice!<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Let me try to answer some questions, <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Before that I have to mention this is ORC version 2 APIs and this is where the project is moving forward.
<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">JITDylib is the symbol table, basically for a JIT Symbol it have an associated materializers, (you can think of it like an entity that generate the address for that symbol), 
<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Example: compiler are materializers.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">So to add symbols to your own JIT you can define them in JITDylib.
<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">For example, Suppose you want to add "your host process (on which JIT runs) symbols to the JIT".
<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">You can do <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">JD.setGenerator(DynamicLibrarySearchGenerator::GetForCurrentProcess(DL.getGlobalPrefix()))
<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Under hood, ORC normally search for your host symbols in the defGenerator if it can't find symbols anywhere else.
<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">You can look at core.cpp at line 1163 to see how it works!<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">I highly recommended you to watch "Updating ORC for Concurrency" dev meeting talks, it is explained in detail,, <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">For question 4, I don't know maybe If I know after sometime I will write here :)
<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Thanks <u></u><u></u></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">On Thu, 27 Jun 2019 at 14:00, Gaier, Bjoern <<a href="mailto:Bjoern.Gaier@horiba.com" target="_blank">Bjoern.Gaier@horiba.com</a>> wrote:<u></u><u></u></p>
</div>
<blockquote style="border-color:currentcolor currentcolor currentcolor rgb(204,204,204);border-style:none none none solid;border-width:medium medium medium 1pt;padding:0cm 0cm 0cm 6pt;margin-left:4.8pt;margin-right:0cm">
<div>
<div>
<p class="MsoNormal">Hey Praveen,<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">Thanks for your help! I still have questions and try providing some context.<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">For questions:<u></u><u></u></p>
<p class="MsoNormal">2.) I exactly mean that! Sadly I was not able to understand how to use the ‘define’ function, I tried that:<u></u><u></u></p>
<p class="MsoNormal"><img style="width: 9.6041in; height: 0.7291in;" id="gmail-m_2545611975355678736gmail-m_2522667533607468957Picture_x0020_1" src="cid:16b9a0b58da4cff311" width="922" height="70" border="0"><u></u><u></u></p>
<p class="MsoNormal">I had no idea how to deal with that >o<<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">2.1.) With MCJIT I was actually used to getting the name of a function and then ‘answering’ with an address. Is that behavior not possible with OrcJIT anymore? I actually tried
 looking into the ‘setGenerator’ function of the JITDylib. As a test I came up with this:<u></u><u></u></p>
<p class="MsoNormal"><img style="width: 4.7395in; height: 1.6666in;" id="gmail-m_2545611975355678736gmail-m_2522667533607468957Picture_x0020_2" src="cid:16b9a0b58da5b16b22" width="455" height="160" border="0"><u></u><u></u></p>
<p class="MsoNormal">This was pretty cool, because I actually saw the missing function ‘puts’ but I have no idea how to reply with an  address for ‘puts’. Returning ‘Names’ actually makes the application
 pause and not go on.<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal">4.) I used the code of Kaleidoscope JIT for my little experiments. If I understood it correctly, the JIT process is completed after I used the lookup function to find a symbol in
 the code. Now I would like to reset the instance of the Kaleidoscope JIT I had, to jit new modules, which are not related to the previous modules I jitted.<u></u><u></u></p>
<p class="MsoNormal">Kind greetings<u></u><u></u></p>
<p class="MsoNormal">Björn<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"><b>From:</b> Praveen Velliengiri <<a href="mailto:praveenvelliengiri@gmail.com" target="_blank">praveenvelliengiri@gmail.com</a>>
<br>
<b>Sent:</b> Donnerstag, 27. Juni 2019 08:21<br>
<b>To:</b> Gaier, Bjoern <<a href="mailto:Bjoern.Gaier@horiba.com" target="_blank">Bjoern.Gaier@horiba.com</a>>; Lang Hames <<a href="mailto:lhames@gmail.com" target="_blank">lhames@gmail.com</a>><br>
<b>Cc:</b> llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>><br>
<b>Subject:</b> Re: [llvm-dev] Questions about moving from MCJIT to Orc JIT<u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<div>
<div>
<p class="MsoNormal">Hi Bjoern,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">CC'ing Lang hames
<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">For questions,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">1. In short yes, you can replace the memory manager, default one provided is section memory manager.
<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">2. If you mean by " address of already compiled code", yes you can do that.
<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> Like this<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> JITDylib.define(absoluteSymbols, ( Your_own_symbol , JITTargetAddress(Address of function))), now ORC can resolve all the references to Your_own_symbol to the provided the Address.
<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">3. Yes, all the class/function with legacy prefix will be removed in subsequent releases.
<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">4. Could please provide some more context on this? Like it's usage model, what goal you are aiming for?
<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
</div>
</div>
<p class="MsoNormal">Als GmbH eingetragen im Handelsregister Bad Homburg v.d.H. HRB 9816, USt.ID-Nr. DE 114 165 789 Geschäftsführer: Dr. Hiroshi Nakamura, Dr. Robert Plank, Markus Bode, Heiko Lampert, Takashi Nagano, Takeshi Fukushima. Junichi Tajika
<u></u><u></u></p>
</div>
</blockquote>
</div>
</div>
Als GmbH eingetragen im Handelsregister Bad Homburg v.d.H. HRB 9816, USt.ID-Nr. DE 114 165 789 Geschäftsführer: Dr. Hiroshi Nakamura, Dr. Robert Plank, Markus Bode, Heiko Lampert, Takashi Nagano, Takeshi Fukushima. Junichi Tajika
</div>

</blockquote></div>