mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 11:42:57 +01:00
8159ba335a
supporting move-only closures. Most of the core optimizations for std::function are here plus a potentially novel one that detects trivially movable and destroyable functors and implements those with fewer indirections. This is especially useful as we start trying to add concurrency primitives as those often end up with move-only types (futures, promises, etc) and wanting them to work through lambdas. As further work, we could add better support for things like const-qualified operator()s to support more algorithms, and r-value ref qualified operator()s to model call-once. None of that is here though. We can also provide our own llvm::function that has some of the optimizations used in this class, but with copy semantics instead of move semantics. This is motivated by increasing usage of things like executors and the task queue where it is useful to embed move-only types like a std::promise within a type erased function. That isn't possible without this version of a type erased function. Differential Revision: https://reviews.llvm.org/D48349 llvm-svn: 336156 |
||
---|---|---|
.. | ||
APFloatTest.cpp | ||
APIntTest.cpp | ||
APSIntTest.cpp | ||
ArrayRefTest.cpp | ||
BitmaskEnumTest.cpp | ||
BitVectorTest.cpp | ||
BreadthFirstIteratorTest.cpp | ||
BumpPtrListTest.cpp | ||
CMakeLists.txt | ||
DAGDeltaAlgorithmTest.cpp | ||
DeltaAlgorithmTest.cpp | ||
DenseMapTest.cpp | ||
DenseSetTest.cpp | ||
DepthFirstIteratorTest.cpp | ||
EquivalenceClassesTest.cpp | ||
FoldingSet.cpp | ||
FunctionExtrasTest.cpp | ||
FunctionRefTest.cpp | ||
HashingTest.cpp | ||
IListBaseTest.cpp | ||
IListIteratorTest.cpp | ||
IListNodeBaseTest.cpp | ||
IListNodeTest.cpp | ||
IListSentinelTest.cpp | ||
IListTest.cpp | ||
ImmutableMapTest.cpp | ||
ImmutableSetTest.cpp | ||
IntEqClassesTest.cpp | ||
IntervalMapTest.cpp | ||
IntrusiveRefCntPtrTest.cpp | ||
IteratorTest.cpp | ||
MakeUniqueTest.cpp | ||
MappedIteratorTest.cpp | ||
MapVectorTest.cpp | ||
OptionalTest.cpp | ||
PackedVectorTest.cpp | ||
PointerEmbeddedIntTest.cpp | ||
PointerIntPairTest.cpp | ||
PointerSumTypeTest.cpp | ||
PointerUnionTest.cpp | ||
PostOrderIteratorTest.cpp | ||
PriorityWorklistTest.cpp | ||
RangeAdapterTest.cpp | ||
SCCIteratorTest.cpp | ||
ScopeExitTest.cpp | ||
SequenceTest.cpp | ||
SetVectorTest.cpp | ||
SimpleIListTest.cpp | ||
SmallPtrSetTest.cpp | ||
SmallSetTest.cpp | ||
SmallStringTest.cpp | ||
SmallVectorTest.cpp | ||
SparseBitVectorTest.cpp | ||
SparseMultiSetTest.cpp | ||
SparseSetTest.cpp | ||
StatisticTest.cpp | ||
STLExtrasTest.cpp | ||
StringExtrasTest.cpp | ||
StringMapTest.cpp | ||
StringRefTest.cpp | ||
StringSwitchTest.cpp | ||
TestGraph.h | ||
TinyPtrVectorTest.cpp | ||
TripleTest.cpp | ||
TwineTest.cpp | ||
VariadicFunctionTest.cpp |