aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/CodeGen/CodeGenModule.cpp
diff options
context:
space:
mode:
authorLang Hames <lhames@gmail.com>2018-09-25 22:57:44 +0000
committerLang Hames <lhames@gmail.com>2018-09-25 22:57:44 +0000
commitabeedf1812eeb33578b97bb975ddbf5da4ae933c (patch)
treeb83d194aa60258feb5e21c38c4fcfcd296fb5776 /clang/lib/CodeGen/CodeGenModule.cpp
parentb794aec290269484481b0ce915f3c5f854a5783f (diff)
downloadllvm-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