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

Side by Side Diff: base/allocator/allocator_shim.h

Issue 2697123007: base: Add support for malloc zones to the allocator shim (Closed)
Patch Set: Windows compile error. Created 3 years, 10 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
« no previous file with comments | « no previous file | base/allocator/allocator_shim.cc » ('j') | base/allocator/allocator_shim.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef BASE_ALLOCATOR_ALLOCATOR_SHIM_H_ 5 #ifndef BASE_ALLOCATOR_ALLOCATOR_SHIM_H_
6 #define BASE_ALLOCATOR_ALLOCATOR_SHIM_H_ 6 #define BASE_ALLOCATOR_ALLOCATOR_SHIM_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 9
10 #include "base/base_export.h" 10 #include "base/base_export.h"
(...skipping 28 matching lines...) Expand all
39 // config (tcmalloc, glibc, ...). 39 // config (tcmalloc, glibc, ...).
40 // 40 //
41 // It is possible to dynamically insert further AllocatorDispatch stages 41 // It is possible to dynamically insert further AllocatorDispatch stages
42 // to the front of the chain, for debugging / profiling purposes. 42 // to the front of the chain, for debugging / profiling purposes.
43 // 43 //
44 // All the functions must be thred safe. The shim does not enforce any 44 // All the functions must be thred safe. The shim does not enforce any
45 // serialization. This is to route to thread-aware allocators (e.g, tcmalloc) 45 // serialization. This is to route to thread-aware allocators (e.g, tcmalloc)
46 // wihout introducing unnecessary perf hits. 46 // wihout introducing unnecessary perf hits.
47 47
48 struct AllocatorDispatch { 48 struct AllocatorDispatch {
49 using AllocFn = void*(const AllocatorDispatch* self, size_t size); 49 using AllocFn = void*(const AllocatorDispatch* self,
50 size_t size,
51 void* context);
50 using AllocZeroInitializedFn = void*(const AllocatorDispatch* self, 52 using AllocZeroInitializedFn = void*(const AllocatorDispatch* self,
51 size_t n, 53 size_t n,
52 size_t size); 54 size_t size,
55 void* context);
53 using AllocAlignedFn = void*(const AllocatorDispatch* self, 56 using AllocAlignedFn = void*(const AllocatorDispatch* self,
54 size_t alignment, 57 size_t alignment,
55 size_t size); 58 size_t size,
59 void* context);
56 using ReallocFn = void*(const AllocatorDispatch* self, 60 using ReallocFn = void*(const AllocatorDispatch* self,
57 void* address, 61 void* address,
58 size_t size); 62 size_t size,
59 using FreeFn = void(const AllocatorDispatch* self, void* address); 63 void* context);
64 using FreeFn = void(const AllocatorDispatch* self,
65 void* address,
66 void* context);
60 // Returns the best available estimate for the actual amount of memory 67 // Returns the best available estimate for the actual amount of memory
61 // consumed by the allocation |address|. If possible, this should include 68 // consumed by the allocation |address|. If possible, this should include
62 // heap overhead or at least a decent estimate of the full cost of the 69 // heap overhead or at least a decent estimate of the full cost of the
63 // allocation. If no good estimate is possible, returns zero. 70 // allocation. If no good estimate is possible, returns zero.
64 using GetSizeEstimateFn = size_t(const AllocatorDispatch* self, 71 using GetSizeEstimateFn = size_t(const AllocatorDispatch* self,
65 void* address); 72 void* address,
73 void* context);
66 using BatchMallocFn = unsigned(const AllocatorDispatch* self, 74 using BatchMallocFn = unsigned(const AllocatorDispatch* self,
67 size_t size, 75 size_t size,
68 void** results, 76 void** results,
69 unsigned num_requested); 77 unsigned num_requested,
78 void* context);
70 using BatchFreeFn = void(const AllocatorDispatch* self, 79 using BatchFreeFn = void(const AllocatorDispatch* self,
71 void** to_be_freed, 80 void** to_be_freed,
72 unsigned num_to_be_freed); 81 unsigned num_to_be_freed,
82 void* context);
73 using FreeDefiniteSizeFn = void(const AllocatorDispatch* self, 83 using FreeDefiniteSizeFn = void(const AllocatorDispatch* self,
74 void* ptr, 84 void* ptr,
75 size_t size); 85 size_t size,
86 void* context);
76 87
77 AllocFn* const alloc_function; 88 AllocFn* const alloc_function;
78 AllocZeroInitializedFn* const alloc_zero_initialized_function; 89 AllocZeroInitializedFn* const alloc_zero_initialized_function;
79 AllocAlignedFn* const alloc_aligned_function; 90 AllocAlignedFn* const alloc_aligned_function;
80 ReallocFn* const realloc_function; 91 ReallocFn* const realloc_function;
81 FreeFn* const free_function; 92 FreeFn* const free_function;
82 GetSizeEstimateFn* const get_size_estimate_function; 93 GetSizeEstimateFn* const get_size_estimate_function;
83 BatchMallocFn* const batch_malloc_function; 94 BatchMallocFn* const batch_malloc_function;
84 BatchFreeFn* const batch_free_function; 95 BatchFreeFn* const batch_free_function;
85 FreeDefiniteSizeFn* const free_definite_size_function; 96 FreeDefiniteSizeFn* const free_definite_size_function;
(...skipping 27 matching lines...) Expand all
113 124
114 #if defined(OS_MACOSX) 125 #if defined(OS_MACOSX)
115 // On macOS, the allocator shim needs to be turned on during runtime. 126 // On macOS, the allocator shim needs to be turned on during runtime.
116 BASE_EXPORT void InitializeAllocatorShim(); 127 BASE_EXPORT void InitializeAllocatorShim();
117 #endif // defined(OS_MACOSX) 128 #endif // defined(OS_MACOSX)
118 129
119 } // namespace allocator 130 } // namespace allocator
120 } // namespace base 131 } // namespace base
121 132
122 #endif // BASE_ALLOCATOR_ALLOCATOR_SHIM_H_ 133 #endif // BASE_ALLOCATOR_ALLOCATOR_SHIM_H_
OLDNEW
« no previous file with comments | « no previous file | base/allocator/allocator_shim.cc » ('j') | base/allocator/allocator_shim.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698