Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(22)

Side by Side Diff: third_party/tcmalloc/chromium/src/base/stl_allocator.h

Issue 7050034: Merge google-perftools r109 (the current contents of third_party/tcmalloc/vendor) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* Copyright (c) 2006, Google Inc. 1 /* Copyright (c) 2006, Google Inc.
2 * All rights reserved. 2 * All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 19 matching lines...) Expand all
30 * --- 30 * ---
31 * Author: Maxim Lifantsev 31 * Author: Maxim Lifantsev
32 */ 32 */
33 33
34 34
35 #ifndef BASE_STL_ALLOCATOR_H_ 35 #ifndef BASE_STL_ALLOCATOR_H_
36 #define BASE_STL_ALLOCATOR_H_ 36 #define BASE_STL_ALLOCATOR_H_
37 37
38 #include <config.h> 38 #include <config.h>
39 39
40 #include <stddef.h> // for ptrdiff_t
40 #include <limits> 41 #include <limits>
41 42
42 #include "base/basictypes.h"
43 #include "base/logging.h" 43 #include "base/logging.h"
44 44
45 // Generic allocator class for STL objects 45 // Generic allocator class for STL objects
46 // that uses a given type-less allocator Alloc, which must provide: 46 // that uses a given type-less allocator Alloc, which must provide:
47 // static void* Alloc::Allocate(size_t size); 47 // static void* Alloc::Allocate(size_t size);
48 // static void Alloc::Free(void* ptr); 48 // static void Alloc::Free(void* ptr, size_t size);
49 // 49 //
50 // STL_Allocator<T, MyAlloc> provides the same thread-safety 50 // STL_Allocator<T, MyAlloc> provides the same thread-safety
51 // guarantees as MyAlloc. 51 // guarantees as MyAlloc.
52 // 52 //
53 // Usage example: 53 // Usage example:
54 // set<T, less<T>, STL_Allocator<T, MyAlloc> > my_set; 54 // set<T, less<T>, STL_Allocator<T, MyAlloc> > my_set;
55 // CAVEAT: Parts of the code below are probably specific 55 // CAVEAT: Parts of the code below are probably specific
56 // to the STL version(s) we are using. 56 // to the STL version(s) we are using.
57 // The code is simply lifted from what std::allocator<> provides. 57 // The code is simply lifted from what std::allocator<> provides.
58 template <typename T, class Alloc> 58 template <typename T, class Alloc>
(...skipping 16 matching lines...) Expand all
75 template <class T1> STL_Allocator(const STL_Allocator<T1, Alloc>&) { } 75 template <class T1> STL_Allocator(const STL_Allocator<T1, Alloc>&) { }
76 ~STL_Allocator() { } 76 ~STL_Allocator() { }
77 77
78 pointer address(reference x) const { return &x; } 78 pointer address(reference x) const { return &x; }
79 const_pointer address(const_reference x) const { return &x; } 79 const_pointer address(const_reference x) const { return &x; }
80 80
81 pointer allocate(size_type n, const void* = 0) { 81 pointer allocate(size_type n, const void* = 0) {
82 RAW_DCHECK((n * sizeof(T)) / sizeof(T) == n, "n is too big to allocate"); 82 RAW_DCHECK((n * sizeof(T)) / sizeof(T) == n, "n is too big to allocate");
83 return static_cast<T*>(Alloc::Allocate(n * sizeof(T))); 83 return static_cast<T*>(Alloc::Allocate(n * sizeof(T)));
84 } 84 }
85 void deallocate(pointer p, size_type /*n*/) { Alloc::Free(p); } 85 void deallocate(pointer p, size_type n) { Alloc::Free(p, n * sizeof(T)); }
86 86
87 size_type max_size() const { return size_t(-1) / sizeof(T); } 87 size_type max_size() const { return size_t(-1) / sizeof(T); }
88 88
89 void construct(pointer p, const T& val) { ::new(p) T(val); } 89 void construct(pointer p, const T& val) { ::new(p) T(val); }
90 void destroy(pointer p) { p->~T(); } 90 void destroy(pointer p) { p->~T(); }
91 91
92 // There's no state, so these allocators are always equal 92 // There's no state, so these allocators are always equal
93 bool operator==(const STL_Allocator&) const { return true; } 93 bool operator==(const STL_Allocator&) const { return true; }
94 }; 94 };
95 95
96 #endif // BASE_STL_ALLOCATOR_H_ 96 #endif // BASE_STL_ALLOCATOR_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698