v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
page-allocator.h
Go to the documentation of this file.
1// Copyright 2017 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef V8_BASE_PAGE_ALLOCATOR_H_
6#define V8_BASE_PAGE_ALLOCATOR_H_
7
8#include <memory>
9
10#include "include/v8-platform.h"
13
14namespace v8 {
15namespace base {
16
17class SharedMemory;
18
20 : public NON_EXPORTED_BASE(::v8::PageAllocator) {
21 public:
23 ~PageAllocator() override = default;
24
25 size_t AllocatePageSize() override { return allocate_page_size_; }
26
27 size_t CommitPageSize() override { return commit_page_size_; }
28
29 void SetRandomMmapSeed(int64_t seed) override;
30
31 void* GetRandomMmapAddr() override;
32
33 void* AllocatePages(void* hint, size_t size, size_t alignment,
34 PageAllocator::Permission access) override;
35
36 bool CanAllocateSharedPages() override;
37
38 std::unique_ptr<v8::PageAllocator::SharedMemory> AllocateSharedPages(
39 size_t size, const void* original_address) override;
40
41 bool FreePages(void* address, size_t size) override;
42
43 bool ReleasePages(void* address, size_t size, size_t new_size) override;
44
45 bool SetPermissions(void* address, size_t size,
46 PageAllocator::Permission access) override;
47
48 bool RecommitPages(void* address, size_t size,
49 PageAllocator::Permission access) override;
50
51 bool DiscardSystemPages(void* address, size_t size) override;
52
53 bool DecommitPages(void* address, size_t size) override;
54
55 bool SealPages(void* address, size_t size) override;
56
57 private:
59
60 void* RemapShared(void* old_address, void* new_address, size_t size);
61
62 const size_t allocate_page_size_;
63 const size_t commit_page_size_;
64};
65
66} // namespace base
67} // namespace v8
68#endif // V8_BASE_PAGE_ALLOCATOR_H_
#define V8_BASE_EXPORT
Definition base-export.h:26
const size_t allocate_page_size_
size_t AllocatePageSize() override
size_t CommitPageSize() override
const size_t commit_page_size_
~PageAllocator() override=default
#define NON_EXPORTED_BASE(code)