[all-commits] [llvm/llvm-project] eb347a: [ORC] Make RTBridge Callers value types; add build...

Lang Hames via All-commits all-commits at lists.llvm.org
Sat Aug 8 20:41:09 PDT 2026


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: eb347afd3c9617075be5613de0c2454427f91dad
      https://github.com/llvm/llvm-project/commit/eb347afd3c9617075be5613de0c2454427f91dad
  Author: Lang Hames <lhames at gmail.com>
  Date:   2026-08-09 (Sun, 09 Aug 2026)

  Changed paths:
    M llvm/include/llvm/ExecutionEngine/Orc/RTBridge/Calls.h
    M llvm/include/llvm/ExecutionEngine/Orc/RTBridge/SPS/Calls.h
    M llvm/lib/ExecutionEngine/Orc/COFFPlatform.cpp
    M llvm/lib/ExecutionEngine/Orc/COFFVCRuntimeSupport.cpp
    M llvm/unittests/ExecutionEngine/Orc/SPSCallersTest.cpp

  Log Message:
  -----------
  [ORC] Make RTBridge Callers value types; add buildCallers (#215046)

rt::Caller was an abstract base with a per-protocol subclass
(rt::sps::Caller), so holding one polymorphically meant a vtable and a
heap allocation, and each caller stored an ExecutionSession reference.

Replace that with a value type: rt::Caller<Sig> holds a callee address
and a dispatch function pointer (CallerBase provides the address,
operator bool, and calleeAddr()). The serialization/dispatch protocol is
erased behind the function pointer instead of a class hierarchy, so
callers are copyable, carry no vtable or heap allocation, can be stored
inline, and take the ExecutionSession at the call rather than storing
it. This lets non-templated generic code hold and invoke callers without
knowing the protocol.

rt::sps::CallerSpec supplies a caller's dispatch function and
controller-interface name; the named specs (MainCallerSpec,
VoidVoidCallerSpec, ...) replace the previous rt::sps caller subclasses.

Add buildCallers / callerInit to resolve a set of callers by name from
the bootstrap JITDylib in a single call, and migrate the in-tree users
(COFFPlatform, COFFVCRuntimeSupport) to it. Rewrite SPSCallersTest for
the new API.



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list