Ignore:
Timestamp:
Mar 4, 2015, 4:41:06 PM (4 years ago)
Author:
nmedfort
Message:

Temporary check-in of incomplete multiplexing module.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • icGREP/icgrep-devel/icgrep/slab_allocator.h

    r4526 r4536  
    44#include <llvm/Support/Allocator.h>
    55
     6using LLVMAllocator = llvm::BumpPtrAllocator;
     7
    68namespace {
    7 
    8 using LLVMAllocator = llvm::BumpPtrAllocator;
    99
    1010class __BumpPtrAllocatorProxy {
     
    5656    }
    5757
    58     inline void deallocate(pointer p, size_type n) noexcept {
     58    inline void deallocate(pointer p, size_type = 0) noexcept {
    5959        mAllocator.Deallocate<T>(p);
    6060    }
     
    8383}
    8484
     85template <typename T>
     86class LLVMAllocatorProxy {
     87public:
     88
     89    using value_type = T;
     90    using pointer = value_type*;
     91    using const_pointer = const value_type*;
     92    using reference = value_type&;
     93    using const_reference = const value_type&;
     94    using size_type = std::size_t;
     95    using difference_type = std::ptrdiff_t;
     96
     97    template<class U>
     98    struct rebind {
     99        typedef SlabAllocator<U> other;
     100    };
     101
     102    inline pointer allocate(size_type n, const_pointer = nullptr) noexcept {
     103        return mAllocator.Allocate<T>(n);
     104    }
     105
     106    inline void deallocate(pointer p, size_type = 0) noexcept {
     107        mAllocator.Deallocate(p);
     108    }
     109
     110    inline size_type max_size() const {
     111        return std::numeric_limits<size_type>::max();
     112    }
     113
     114    inline bool operator==(SlabAllocator<T> const&) { return true; }
     115    inline bool operator!=(SlabAllocator<T> const&) { return false; }
     116
     117    inline LLVMAllocatorProxy(LLVMAllocator & allocator) noexcept : mAllocator(allocator) {}
     118    inline LLVMAllocatorProxy(const LLVMAllocatorProxy & proxy) noexcept : mAllocator(proxy.mAllocator) {}
     119    inline ~LLVMAllocatorProxy() { }
     120private:
     121    LLVMAllocator & mAllocator;
     122};
     123
    85124#endif // SLAB_ALLOCATOR_H
Note: See TracChangeset for help on using the changeset viewer.