summaryrefslogtreecommitdiff
path: root/deps/v8/src/base/page-allocator.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/base/page-allocator.cc')
-rw-r--r--deps/v8/src/base/page-allocator.cc64
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