diff options
Diffstat (limited to 'deps/v8/src/base/page-allocator.cc')
-rw-r--r-- | deps/v8/src/base/page-allocator.cc | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/deps/v8/src/base/page-allocator.cc b/deps/v8/src/base/page-allocator.cc new file mode 100644 index 0000000000..25ee2e4721 --- /dev/null +++ b/deps/v8/src/base/page-allocator.cc @@ -0,0 +1,64 @@ +// Copyright 2017 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "src/base/page-allocator.h" + +#include "src/base/platform/platform.h" + +namespace v8 { +namespace base { + +#define STATIC_ASSERT_ENUM(a, b) \ + static_assert(static_cast<int>(a) == static_cast<int>(b), \ + "mismatching enum: " #a) + +STATIC_ASSERT_ENUM(PageAllocator::kNoAccess, + base::OS::MemoryPermission::kNoAccess); +STATIC_ASSERT_ENUM(PageAllocator::kReadWrite, + base::OS::MemoryPermission::kReadWrite); +STATIC_ASSERT_ENUM(PageAllocator::kReadWriteExecute, + base::OS::MemoryPermission::kReadWriteExecute); +STATIC_ASSERT_ENUM(PageAllocator::kReadExecute, + base::OS::MemoryPermission::kReadExecute); + +#undef STATIC_ASSERT_ENUM + +size_t PageAllocator::AllocatePageSize() { + return base::OS::AllocatePageSize(); +} + +size_t PageAllocator::CommitPageSize() { return base::OS::CommitPageSize(); } + +void PageAllocator::SetRandomMmapSeed(int64_t seed) { + base::OS::SetRandomMmapSeed(seed); +} + +void* PageAllocator::GetRandomMmapAddr() { + return base::OS::GetRandomMmapAddr(); +} + +void* PageAllocator::AllocatePages(void* address, size_t size, size_t alignment, + PageAllocator::Permission access) { + return base::OS::Allocate(address, size, alignment, + static_cast<base::OS::MemoryPermission>(access)); +} + +bool PageAllocator::FreePages(void* address, size_t size) { + return base::OS::Free(address, size); +} + +bool PageAllocator::ReleasePages(void* address, size_t size, size_t new_size) { + DCHECK_LT(new_size, size); + return base::OS::Release(reinterpret_cast<uint8_t*>(address) + new_size, + size - new_size); +} + +bool PageAllocator::SetPermissions(void* address, size_t size, + PageAllocator::Permission access) { + return base::OS::SetPermissions( + address, size, static_cast<base::OS::MemoryPermission>(access)); +} + +} // namespace base +} // namespace v8 |