Skip to content
  1. Nov 28, 2010
  2. Nov 27, 2010
  3. Nov 26, 2010
  4. Nov 23, 2010
  5. Nov 19, 2010
    • Rafael Espindola's avatar
      Fix a use after free. Patch by Frits van Bommel. · cf14a382
      Rafael Espindola authored
      llvm-svn: 119842
      cf14a382
    • 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
    • Dale Johannesen's avatar
      Aligned and unaligned copies of the same string · 461e704a
      Dale Johannesen authored
      were not hashing to the same value.  Analysis
      and patch by Frits van Bommel!
      
      llvm-svn: 119770
      461e704a
  6. Nov 18, 2010
  7. Nov 17, 2010
  8. Nov 13, 2010
  9. Nov 07, 2010
  10. Nov 05, 2010
  11. Nov 03, 2010
  12. Nov 02, 2010
  13. Oct 29, 2010
  14. Oct 28, 2010
  15. Oct 20, 2010
  16. Oct 19, 2010
  17. Oct 18, 2010
  18. Oct 17, 2010
  19. Oct 14, 2010
  20. Oct 08, 2010
  21. Oct 07, 2010
  22. Oct 05, 2010
  23. Sep 30, 2010
    • Benjamin Kramer's avatar
      Grow BumpPtrAllocator's slab size dynamically if we allocated many slabs. This · 90086abf
      Benjamin Kramer authored
      reduces the amount of malloc calls and may reduce memory overhead.
      
      Some numbers:
      ASTContext stats, clang -cc1 -disable-free -fsyntax-only Cocoa_h.m
      without dynamic growth                          |  with dynamic growth
      Number of memory regions: 3158                  |  Number of memory regions: 432
      Bytes used: 12333185                            |  Bytes used: 12333185
      Bytes allocated: 12935168                       |  Bytes allocated: 12800000
      Bytes wasted: 601983 (includes alignment, etc)  |  Bytes wasted: 466815 (includes alignment, etc)
      
      ASTContext stats, clang -cc1 -disable-free -fsyntax-only on clang's ASTReader.cpp
      without dynamic growth                          |  with dynamic growth
      Number of memory regions: 10987                 |  Number of memory regions: 551
      Bytes used: 42910356                            |  Bytes used: 42910356
      Bytes allocated: 45002752                       |  Bytes allocated: 44711936
      Bytes wasted: 2092396 (includes alignment, etc) |  Bytes wasted: 1801580 (includes alignment, etc)
      
      llvm-svn: 115151
      90086abf
  24. Sep 29, 2010
  25. Sep 28, 2010
  26. Sep 27, 2010
Loading