aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/Support/MallocAllocator.h15
-rw-r--r--include/llvm/Support/MallocAllocator.h15
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