LLVM JIT: How to install a callback for a function loaded in at runtime

Hello,

This is probably a bit of a beginner's question but I am new to LLVM
I have been examining the possibility of constructing something similar to the JnJVM for a language which supports dynamic class loading. The problem I am having is determining how the JIT system allows for dynamic loading of functions into the JIT. The paper indicates the JnJVM use some sort of callback when the JIT hits a call it cannot yet resolve. How do I install such a handler?

Thanks in advance,

Carter.

lib/System/DynamicLibrary.cpp is a good place to look.

Evan

Hi Carter,

Carter Cheng wrote:

Hello,

This is probably a bit of a beginner's question but I am new to LLVM
I have been examining the possibility of constructing something similar to the JnJVM for a language which supports dynamic class loading. The problem I am having is determining how the JIT system allows for dynamic loading of functions into the JIT. The paper indicates the JnJVM use some sort of callback when the JIT hits a call it cannot yet resolve. How do I install such a handler?

You need to implement your own ModuleProvider and specialize the materialzeFunction function to do the dynamic loading. In vmkit, you can take a look at lib/JnJVM/VMCore/JnjvmModuleProvider.cpp file.

Nicolas

Thanks. I didnt realize that this particular function was a virtual inherited from the Module Provider interface. Out of curiousity what applications does the materializeModule function have and when does it get invoked?

Regards,

Carter.