Re: [Haskell-cafe] Caching functions compiled with llvm-hs

On 11/07/2020, Georgi Lyubenov
Is there something wrong with your idea? (other than ideological issues with unsafePerformIO - I guess then the standard approach would be to use some State holding your compiled functions or a Reader over an MVar holding your compiled functions)
The part that feels wrong here is that one has to create a new Module for every single function. I always thought of LLVM Modules as kind of compilation units. Or is this an okay-ish approach?
The only thing you should make sure to do is add a NOINLINE to wherever the unsafePerformIO is, so that it doesn't get inlined and executed more than once.
Oh I totally forgot! Thank you for reminding! Cheers, Tom

On Sun, 12 Jul 2020, Tom Westerhout wrote:
On 11/07/2020, Georgi Lyubenov
wrote:
Is there something wrong with your idea? (other than ideological issues with unsafePerformIO - I guess then the standard approach would be to use some State holding your compiled functions or a Reader over an MVar holding your compiled functions)
The part that feels wrong here is that one has to create a new Module for every single function. I always thought of LLVM Modules as kind of compilation units.
Right. Your module can contain multiple functions and they are compiled and optimized together by LLVM. But if you want to cache every single function then a one-function-module is fine.

On 12/07/2020, Henning Thielemann
On Sun, 12 Jul 2020, Tom Westerhout wrote:
The part that feels wrong here is that one has to create a new Module for every single function. I always thought of LLVM Modules as kind of compilation units.
Right. Your module can contain multiple functions and they are compiled and optimized together by LLVM. But if you want to cache every single function then a one-function-module is fine.
Ah that settles it then. Thanks a lot! Cheers, Tom
participants (2)
-
Henning Thielemann
-
Tom Westerhout