We plan to use ORC to JIT compile hot-paths, optimizing them to fully utilize the currently running architecture.
To do this, we extract the hot-paths’ code section (including external linkages, functions, variables, etc) and embed them into the host program. These embedded information are then pass to orc to be compiled and executed.
However, the JIT process may fail and may corrupt the host program. Therefore, we would like to launch a different program to run this JIT process (including linking symbols that resides in the host program) and stream the JIT symbol back to the main program for execution.
In short, the main program request the JIT program to compile some IR and return the JIT symbol back to the main program for execution.
Is there any tool support for this use-case?
Or, do we have to use our own IPC methods (shared memory) and JIT compile the IR onto the shared memory, and lookup the JIT symbol in the shared memory?