diff options
-rw-r--r-- | include/Support/MallocAllocator.h | 15 | ||||
-rw-r--r-- | include/llvm/Support/MallocAllocator.h | 15 |
2 files changed, 26 insertions, 4 deletions
diff --git a/include/Support/MallocAllocator.h b/include/Support/MallocAllocator.h index e063f312ab..1ba25b0d65 100644 --- a/include/Support/MallocAllocator.h +++ b/include/Support/MallocAllocator.h @@ -44,11 +44,11 @@ struct MallocAllocator { const_pointer address(const_reference x) const { return &x; } size_type max_size() const { return ~0 / sizeof(T); } - pointer allocate(size_t n, void* hint = 0) { + static pointer allocate(size_t n, void* hint = 0) { return (pointer)malloc(n*sizeof(T)); } - void deallocate(pointer p, size_t n) { + static void deallocate(pointer p, size_t n) { free((void*)p); } @@ -69,4 +69,15 @@ inline bool operator!=(const MallocAllocator<T>&, const MallocAllocator<T>&) { return false; } +namespace std { + template<typename Type, typename Type2> + struct _Alloc_traits<Type, ::MallocAllocator<Type2> > { + static const bool _S_instanceless = true; + typedef ::MallocAllocator<Type> base_alloc_type; + typedef ::MallocAllocator<Type> _Alloc_type; + typedef ::MallocAllocator<Type> allocator_type; + }; +} + + #endif diff --git a/include/llvm/Support/MallocAllocator.h b/include/llvm/Support/MallocAllocator.h index e063f312ab..1ba25b0d65 100644 --- a/include/llvm/Support/MallocAllocator.h +++ b/include/llvm/Support/MallocAllocator.h @@ -44,11 +44,11 @@ struct MallocAllocator { const_pointer address(const_reference x) const { return &x; } size_type max_size() const { return ~0 / sizeof(T); } - pointer allocate(size_t n, void* hint = 0) { + static pointer allocate(size_t n, void* hint = 0) { return (pointer)malloc(n*sizeof(T)); } - void deallocate(pointer p, size_t n) { + static void deallocate(pointer p, size_t n) { free((void*)p); } @@ -69,4 +69,15 @@ inline bool operator!=(const MallocAllocator<T>&, const MallocAllocator<T>&) { return false; } +namespace std { + template<typename Type, typename Type2> + struct _Alloc_traits<Type, ::MallocAllocator<Type2> > { + static const bool _S_instanceless = true; + typedef ::MallocAllocator<Type> base_alloc_type; + typedef ::MallocAllocator<Type> _Alloc_type; + typedef ::MallocAllocator<Type> allocator_type; + }; +} + + #endif |