1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-21 03:53:04 +02:00
llvm-mirror/include/llvm/ExecutionEngine
Lang Hames 1f6601ec56 [ORC] Add new core ORC APIs (Core.h/Core.cpp): VSO, AsynchronousSymbolQuery and
SymbolSource.

These new APIs are a first stab at tackling some current shortcomings of ORC,
especially in performance and threading support.

VSO (Virtual Shared Object) is a symbol table representing the symbol
definitions of a set of modules that behave as if they had been statically
linked together into a shared object or dylib. Symbol definitions, either
pre-defined addresses or lazy definitions, can be added and queries for symbol
addresses made. The table applies the same linkage strength rules that static
linkers do when constructing a dylib or shared object: duplicate definitions
result in errors, strong definitions override weak or common ones. This class
should improve symbol lookup speed by providing centralized symbol tables (as
compared to the findSymbol implementation in the in-tree ORC layers, which
maintain one symbol table per object file / module added).

AsynchronousSymbolQuery is a query for the addresses of a set of symbols.
Query results are returned via a callback once they become available. Querying
for a set of symbols, rather than one symbol at a time (as the current lookup
scheme does) the JIT has the opportunity to make better use of available
resources (e.g. by spawning multiple jobs to materialize the requested symbols
if possible). Returning results via a callback makes queries asynchronous, so
queries from multiple threads of JIT'd code can proceed simultaneously.

SymbolSource represents a source of symbol definitions. It is used when
adding lazy symbol definitions to a VSO. Symbol definitions can be materialized
when needed or discarded if a stronger definition is found. Materializing on
demand via SymbolSources should (eventually) allow us to remove the lazy
materializers from JITSymbol, which will in turn allow the removal of many
current error checks and reduce the number of RPC round-trips involved in
materializing remote symbols. Adding a discard function allows sources to
discard symbol definitions (or mark them as available_externally), reducing the
amount of redundant code generated by the JIT for ODR symbols.

llvm-svn: 321838
2018-01-05 00:04:16 +00:00
..
Orc [ORC] Add new core ORC APIs (Core.h/Core.cpp): VSO, AsynchronousSymbolQuery and 2018-01-05 00:04:16 +00:00
ExecutionEngine.h [ExecutionEngine] After a heroic dev-meeting hack session, the JIT supports TLS. 2017-10-20 00:53:16 +00:00
GenericValue.h [ExecutionEngine] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-06-19 23:37:52 +00:00
Interpreter.h Remove useless hack that avoids calling LLVMLinkInInterpreter() 2015-12-07 22:27:19 +00:00
JITEventListener.h [ExecutionEngine] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-06-19 23:37:52 +00:00
JITSymbol.h [ORC] Add new core ORC APIs (Core.h/Core.cpp): VSO, AsynchronousSymbolQuery and 2018-01-05 00:04:16 +00:00
MCJIT.h
ObjectCache.h [ExecutionEngine] Fix some Clang-tidy modernize-use-default, modernize-use-equals-delete and Include What You Use warnings; other minor fixes. 2016-11-16 18:07:33 +00:00
ObjectMemoryBuffer.h Use StringRef for MemoryBuffer identifier API (NFC) 2016-10-01 16:38:28 +00:00
OProfileWrapper.h
OrcMCJITReplacement.h
RTDyldMemoryManager.h Make EHFrames available to sub-classes of RTDyldMemoryManager. 2017-07-18 15:50:28 +00:00
RuntimeDyld.h DebugInfo: Generalize LoadedObjectInfoHelper from RuntimeDyld 2017-07-05 15:23:56 +00:00
RuntimeDyldChecker.h Make llvm-rtdlyd -check preserve automatic address mappings made by RuntimeDyld. 2017-05-07 17:19:53 +00:00
SectionMemoryManager.h [SectionMemoryManager] Abstract out mmap, munmap, mprotect even more ; NFC 2017-11-09 06:31:33 +00:00