OSDN Git Service

[ORC] Rewrite the VSO symbol table yet again. Update related utilities.
authorLang Hames <lhames@gmail.com>
Wed, 16 May 2018 22:24:30 +0000 (22:24 +0000)
committerLang Hames <lhames@gmail.com>
Wed, 16 May 2018 22:24:30 +0000 (22:24 +0000)
commitbb60b65608e814839253ed1c74da8df9051ab57a
tree706a303937bf421ee2fca002e6abb027d04e39c5
parent34b5ae7518d0d55139e3b5650997274f16bcf3a1
[ORC] Rewrite the VSO symbol table yet again. Update related utilities.

VSOs now track dependencies for materializing symbols. Each symbol must have its
dependencies registered with the VSO prior to finalization. Usually this will
involve registering the dependencies returned in
AsynchronousSymbolQuery::ResolutionResults for queries made while linking the
symbols being materialized.

Queries against symbols are notified that a symbol is ready once it and all of
its transitive dependencies are finalized, allowing compilation work to be
broken up and moved between threads without queries returning until their
symbols fully safe to access / execute.

Related utilities (VSO, MaterializationUnit, MaterializationResponsibility) are
updated to support dependence tracking and more explicitly track responsibility
for symbols from the point of definition until they are finalized.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@332541 91177308-0d34-0410-b5e6-96231b3b80d8
19 files changed:
examples/Kaleidoscope/BuildingAJIT/Chapter1/KaleidoscopeJIT.h
examples/Kaleidoscope/BuildingAJIT/Chapter2/KaleidoscopeJIT.h
examples/Kaleidoscope/BuildingAJIT/Chapter3/KaleidoscopeJIT.h
examples/Kaleidoscope/BuildingAJIT/Chapter4/KaleidoscopeJIT.h
examples/Kaleidoscope/BuildingAJIT/Chapter5/KaleidoscopeJIT.h
examples/Kaleidoscope/include/KaleidoscopeJIT.h
include/llvm/ExecutionEngine/JITSymbol.h
include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h
include/llvm/ExecutionEngine/Orc/Core.h
include/llvm/ExecutionEngine/Orc/Legacy.h
include/llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h
lib/ExecutionEngine/Orc/Core.cpp
lib/ExecutionEngine/Orc/Legacy.cpp
lib/ExecutionEngine/Orc/OrcCBindingsStack.h
lib/ExecutionEngine/Orc/OrcMCJITReplacement.h
tools/lli/OrcLazyJIT.h
unittests/ExecutionEngine/Orc/CoreAPIsTest.cpp
unittests/ExecutionEngine/Orc/LegacyAPIInteropTest.cpp
unittests/ExecutionEngine/Orc/RTDyldObjectLinkingLayerTest.cpp