v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
lsan-virtual-address-space.h
Go to the documentation of this file.
1// Copyright 2021 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_SANITIZER_LSAN_VIRTUAL_ADDRESS_SPACE_H_
6#define V8_BASE_SANITIZER_LSAN_VIRTUAL_ADDRESS_SPACE_H_
7
11
12namespace v8 {
13namespace base {
14
15using Address = uintptr_t;
16
17// This is a v8::VirtualAddressSpace implementation that decorates provided page
18// allocator object with leak sanitizer notifications when LEAK_SANITIZER is
19// defined.
22 public:
24 std::unique_ptr<v8::VirtualAddressSpace> vas);
25 ~LsanVirtualAddressSpace() override = default;
26
27 void SetRandomSeed(int64_t seed) override {
28 return vas_->SetRandomSeed(seed);
29 }
30
31 Address RandomPageAddress() override { return vas_->RandomPageAddress(); }
32
33 Address AllocatePages(Address hint, size_t size, size_t alignment,
34 PagePermissions permissions) override;
35
36 void FreePages(Address address, size_t size) override;
37
38 Address AllocateSharedPages(Address hint, size_t size,
39 PagePermissions permissions,
41 uint64_t offset) override;
42
43 void FreeSharedPages(Address address, size_t size) override;
44
45 bool SetPagePermissions(Address address, size_t size,
46 PagePermissions permissions) override {
47 return vas_->SetPagePermissions(address, size, permissions);
48 }
49
50 bool RecommitPages(Address address, size_t size,
51 PagePermissions permissions) override {
52 return vas_->RecommitPages(address, size, permissions);
53 }
54
55 bool AllocateGuardRegion(Address address, size_t size) override {
56 return vas_->AllocateGuardRegion(address, size);
57 }
58
59 void FreeGuardRegion(Address address, size_t size) override {
60 vas_->FreeGuardRegion(address, size);
61 }
62
63 bool CanAllocateSubspaces() override { return vas_->CanAllocateSubspaces(); }
64
65 std::unique_ptr<VirtualAddressSpace> AllocateSubspace(
66 Address hint, size_t size, size_t alignment,
67 PagePermissions max_page_permissions) override;
68
69 bool DiscardSystemPages(Address address, size_t size) override {
70 return vas_->DiscardSystemPages(address, size);
71 }
72
73 bool DecommitPages(Address address, size_t size) override {
74 return vas_->DecommitPages(address, size);
75 }
76
77 private:
78 std::unique_ptr<v8::VirtualAddressSpace> vas_;
79};
80
81} // namespace base
82} // namespace v8
83#endif // V8_BASE_SANITIZER_LSAN_VIRTUAL_ADDRESS_SPACE_H_
#define V8_BASE_EXPORT
Definition base-export.h:26
bool SetPagePermissions(Address address, size_t size, PagePermissions permissions) override
std::unique_ptr< v8::VirtualAddressSpace > vas_
bool DiscardSystemPages(Address address, size_t size) override
~LsanVirtualAddressSpace() override=default
void FreeGuardRegion(Address address, size_t size) override
bool AllocateGuardRegion(Address address, size_t size) override
bool RecommitPages(Address address, size_t size, PagePermissions permissions) override
bool DecommitPages(Address address, size_t size) override
int32_t offset
uintptr_t Address
Definition memory.h:13
intptr_t PlatformSharedMemoryHandle
PagePermissions