sanitizer_allocator_internal.h revision 1.1.1.1
1//===-- sanitizer_allocator_internal.h -------------------------- C++ -----===//
2//
3// This file is distributed under the University of Illinois Open Source
4// License. See LICENSE.TXT for details.
5//
6//===----------------------------------------------------------------------===//
7//
8// This allocator is used inside run-times.
9//
10//===----------------------------------------------------------------------===//
11
12#ifndef SANITIZER_ALLOCATOR_INTERNAL_H
13#define SANITIZER_ALLOCATOR_INTERNAL_H
14
15#include "sanitizer_allocator.h"
16#include "sanitizer_internal_defs.h"
17
18namespace __sanitizer {
19
20// FIXME: Check if we may use even more compact size class map for internal
21// purposes.
22typedef CompactSizeClassMap InternalSizeClassMap;
23
24static const uptr kInternalAllocatorSpace = 0;
25static const u64 kInternalAllocatorSize = SANITIZER_MMAP_RANGE_SIZE;
26static const uptr kInternalAllocatorRegionSizeLog = 20;
27#if SANITIZER_WORDSIZE == 32
28static const uptr kInternalAllocatorNumRegions =
29    kInternalAllocatorSize >> kInternalAllocatorRegionSizeLog;
30typedef FlatByteMap<kInternalAllocatorNumRegions> ByteMap;
31#else
32static const uptr kInternalAllocatorNumRegions =
33    kInternalAllocatorSize >> kInternalAllocatorRegionSizeLog;
34typedef TwoLevelByteMap<(kInternalAllocatorNumRegions >> 12), 1 << 12> ByteMap;
35#endif
36typedef SizeClassAllocator32<
37    kInternalAllocatorSpace, kInternalAllocatorSize, 0, InternalSizeClassMap,
38    kInternalAllocatorRegionSizeLog, ByteMap> PrimaryInternalAllocator;
39
40typedef SizeClassAllocatorLocalCache<PrimaryInternalAllocator>
41    InternalAllocatorCache;
42
43typedef CombinedAllocator<PrimaryInternalAllocator, InternalAllocatorCache,
44                          LargeMmapAllocator<> > InternalAllocator;
45
46void *InternalAlloc(uptr size, InternalAllocatorCache *cache = 0);
47void InternalFree(void *p, InternalAllocatorCache *cache = 0);
48InternalAllocator *internal_allocator();
49
50}  // namespace __sanitizer
51
52#endif  // SANITIZER_ALLOCATOR_INTERNAL_H
53