ORC JIT Weekly #37 -- JITLink RISCV, Swift/Obj-C support, ExecutionSession requires ExecutorProcessControl

Hi All,

MachOPlatform TLV support (introduced last week, see [1]) has gone through a few rounds of reversion and re-application while I worked out the kinks, however it looks like it has stabilized in time for the LLVM 13 branch. We still need some work to support non-trivial destructors for thread locals (this will not happen until LLVM 14 or later), but thread-local PODs should now work.

This week’s highlights:

  1. The new JITLink ELF/RISCV backend has landed in [2]. Thanks very much to Stephen Fan for that!

  2. MachOPlatform support for simple Swift and Objective-C programs has landed in [3]. JIT stacks that set up a MachOPlatform instance will now be able to load and run simple Swift and Objective-C programs.

  3. ExecutionSession will soon be required to supply an associated ExecutorProcessControl instance (see [4]). This is another step towards making the APIs uniform regardless of whether JIT’d code is running in-process or out-of-process.

During an initial transition period we will allow use of a placeholder EPC value (the UnsupportedExecutorProcessControl can be used for this), but new utilities are allowed to assume a valid EPC attached to the ExecutionSession, and may fail if one is not present.

If you’re JITing in process you should just be able to use a SelfExecutorProcessControl instance. Please file bugs if you need extensions to that class’s API for your use case.

– Lang.

[1] https://lists.llvm.org/pipermail/llvm-dev/2021-July/151841.html
[2] https://github.com/llvm/llvm-project/commit/0ad562b48bfd7a487eb38ceaa309cdd9a1ad87e7
[3] https://github.com/llvm/llvm-project/commit/cdcc35476833eca4f4996256e3ca0b21ecc26ad8
[4] https://reviews.llvm.org/D104694

Hi All,

No updates this week,

– Lang.