Skip to content
  1. Nov 29, 2010
  2. Nov 19, 2010
    • Jakob Stoklund Olesen's avatar
      Add ADT/IntervalMap. · 345945e3
      Jakob Stoklund Olesen authored
      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: 119787
      345945e3
    • Jakob Stoklund Olesen's avatar
      Revert "Add ADT/IntervalMap.", GCC doesn't like it. · 09770251
      Jakob Stoklund Olesen authored
      This reverts r119772.
      
      llvm-svn: 119773
      09770251
    • Jakob Stoklund Olesen's avatar
      Add ADT/IntervalMap. · 6d89171d
      Jakob Stoklund Olesen authored
      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
      6d89171d
  3. Oct 17, 2010
  4. Oct 08, 2010
  5. Sep 29, 2010
  6. Aug 20, 2010
  7. Jul 28, 2010
  8. Jun 08, 2010
  9. Dec 23, 2009
  10. Dec 16, 2009
  11. Dec 03, 2009
  12. Sep 17, 2009
  13. Sep 11, 2009
  14. Sep 01, 2009
  15. Aug 30, 2009
  16. Aug 25, 2009
  17. Aug 24, 2009
  18. Jul 31, 2009
  19. Jul 24, 2009
  20. Jul 15, 2009
  21. Jul 14, 2009
  22. Jul 07, 2009
  23. Jun 26, 2009
  24. Jun 21, 2009
  25. Jun 18, 2009
  26. Jun 16, 2009
  27. May 27, 2009
  28. Mar 05, 2009
  29. Sep 22, 2008
Loading