23 #ifndef INCLUDED_ALLOCATORS_UNIQUE_RANGE 24 #define INCLUDED_ALLOCATORS_UNIQUE_RANGE 88 Set(p, size, deleter);
144 Set(p, size, deleter);
162 ASSERT(
size_t(deleter) < allocationAlignment);
182 Set(p, size, idxDeleter);
220 #endif // #ifndef INCLUDED_ALLOCATORS_UNIQUE_RANGE #define PROT_WRITE
Definition: wmman.h:33
pointer release()
Definition: unique_range.h:128
static const size_t pageSize
Definition: alignment.h:83
void Set(pointer p, size_t size, IdxDeleter deleter)
Definition: unique_range.h:159
intptr_t IdxDeleter
Definition: unique_range.h:43
UniqueRange()
Definition: unique_range.h:81
LIB_API UniqueRange AllocateAligned(size_t size, size_t alignment)
Definition: unique_range.cpp:79
Definition: unique_range.h:75
void Clear()
Definition: unique_range.h:172
static void swap(UniqueRange &p1, UniqueRange &p2)
Definition: unique_range.h:198
uintptr_t address_
Definition: unique_range.h:192
void Delete()
Definition: unique_range.h:186
Definition: unique_range.h:196
#define ASSERT(expr)
same as ENSURE in debug mode, does nothing in release mode.
Definition: debug.h:315
LIB_API void RegisterUniqueRangeDeleter(UniqueRangeDeleter deleter, volatile IdxDeleter *idxDeleter)
register a deleter, returning its index within the table.
Definition: unique_range.cpp:50
UniqueRange(UniqueRange &&rvalue)
Definition: unique_range.h:91
void(* UniqueRangeDeleter)(void *pointer, size_t size)
Definition: unique_range.h:48
LIB_API UniqueRange AllocateVM(size_t size, vm::PageType pageSize=vm::kDefault, int prot=PROT_READ|PROT_WRITE)
Definition: unique_range.cpp:95
UniqueRange(pointer p, size_t size, IdxDeleter deleter)
Definition: unique_range.h:86
~UniqueRange()
Definition: unique_range.h:107
IdxDeleter get_deleter() const
Definition: unique_range.h:117
#define NOTHROW_DECLARE
indicate a function will not throw any synchronous exceptions, thus hopefully generating smaller and ...
Definition: code_annotation.h:85
PageType
Definition: vm.h:42
UniqueRange & operator=(UniqueRange &&rvalue)
Definition: unique_range.h:96
#define PROT_READ
Definition: wmman.h:32
void swap(UniqueRange &rhs)
Definition: unique_range.h:147
size_t size_
Definition: unique_range.h:193
static const IdxDeleter idxDeleterNone
Definition: unique_range.h:46
void Pilfer(UniqueRange &victim)
Definition: unique_range.h:177
void reset(pointer p, size_t size, IdxDeleter deleter)
Definition: unique_range.h:141
void element_type
Definition: unique_range.h:79
void * pointer
Definition: unique_range.h:78
size_t size() const
Definition: unique_range.h:122
LIB_API NOTHROW_DECLARE void CallUniqueRangeDeleter(void *pointer, size_t size, IdxDeleter idxDeleter)
Definition: unique_range.cpp:70
static const size_t allocationAlignment
Definition: alignment.h:91
void reset()
Definition: unique_range.h:135