diff options
author | Lang Hames <lhames@gmail.com> | 2018-09-25 22:57:44 +0000 |
---|---|---|
committer | Lang Hames <lhames@gmail.com> | 2018-09-25 22:57:44 +0000 |
commit | abeedf1812eeb33578b97bb975ddbf5da4ae933c (patch) | |
tree | b83d194aa60258feb5e21c38c4fcfcd296fb5776 /clang/lib/CodeGen/CodeGenModule.cpp | |
parent | b794aec290269484481b0ce915f3c5f854a5783f (diff) | |
download | llvm-abeedf1812eeb33578b97bb975ddbf5da4ae933c.zip llvm-abeedf1812eeb33578b97bb975ddbf5da4ae933c.tar.gz llvm-abeedf1812eeb33578b97bb975ddbf5da4ae933c.tar.bz2 |
[ORC] Add an asynchronous jit-link function, jitLinkForORC, to RuntimeDyld and
switch RTDyldObjectLinkingLayer2 to use it.
RuntimeDyld::loadObject is currently a blocking operation. This means that any
JIT'd code whose call-graph contains an embedded complete K graph will require
at least K threads to link, which precludes the use of a fixed sized thread
pool for concurrent JITing of arbitrary code (whatever K the thread-pool is set
at, any code with a K+1 complete subgraph will deadlock at JIT-link time).
To address this issue, this commmit introduces a function called jitLinkForORC
that uses continuation-passing style to pass the fix-up and finalization steps
to the asynchronous symbol resolver interface so that linking can be performed
without blocking.
llvm-svn: 343043
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
0 files changed, 0 insertions, 0 deletions