mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 11:42:57 +01:00
7d82c5c710
This is a sorted interval map data structure for small keys and values with automatic coalescing and bidirectional iteration over coalesced intervals. Except for coalescing intervals, it provides similar functionality to std::map. It is however much more compact for small keys and values, and hopefully faster too. The container object itself can hold the first few intervals without any allocations, then it switches to a cache conscious B+-tree representation. A recycling allocator can be shared between many containers, even between containers holding different types. The IntervalMap is initially intended to be used with SlotIndex intervals for: - Backing store for LiveIntervalUnion that is smaller and faster than std::set. - Backing store for LiveInterval with less overhead than std::vector for typical intervals and O(N log N) merging of large intervals. 99% of virtual registers need 4 entries or less and would benefit from the small object optimization. - Backing store for LiveDebugVariable which doesn't exist yet, but will track debug variables during register allocation. This is a work in progress. Missing items are: - Performance metrics. - erase(). - insert() shrinkage. - clear(). - More performance metrics. - Simplification and detemplatization. llvm-svn: 119772 |
||
---|---|---|
.. | ||
APFloat.h | ||
APInt.h | ||
APSInt.h | ||
BitVector.h | ||
DAGDeltaAlgorithm.h | ||
DeltaAlgorithm.h | ||
DenseMap.h | ||
DenseMapInfo.h | ||
DenseSet.h | ||
DepthFirstIterator.h | ||
EquivalenceClasses.h | ||
FoldingSet.h | ||
GraphTraits.h | ||
ilist_node.h | ||
ilist.h | ||
ImmutableIntervalMap.h | ||
ImmutableList.h | ||
ImmutableMap.h | ||
ImmutableSet.h | ||
IndexedMap.h | ||
IntervalMap.h | ||
IntrusiveRefCntPtr.h | ||
NullablePtr.h | ||
Optional.h | ||
OwningPtr.h | ||
PointerIntPair.h | ||
PointerUnion.h | ||
PostOrderIterator.h | ||
PriorityQueue.h | ||
SCCIterator.h | ||
ScopedHashTable.h | ||
SetOperations.h | ||
SetVector.h | ||
SmallBitVector.h | ||
SmallPtrSet.h | ||
SmallSet.h | ||
SmallString.h | ||
SmallVector.h | ||
SparseBitVector.h | ||
Statistic.h | ||
STLExtras.h | ||
StringExtras.h | ||
StringMap.h | ||
StringRef.h | ||
StringSet.h | ||
StringSwitch.h | ||
Trie.h | ||
Triple.h | ||
Twine.h | ||
UniqueVector.h | ||
ValueMap.h | ||
VectorExtras.h |