![]() |
v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
|
#include <emulated-virtual-address-subspace.h>
Public Member Functions | |
EmulatedVirtualAddressSubspace (v8::VirtualAddressSpace *parent_space, Address base, size_t mapped_size, size_t total_size) | |
~EmulatedVirtualAddressSubspace () override | |
void | SetRandomSeed (int64_t seed) override |
Address | RandomPageAddress () override |
Address | AllocatePages (Address hint, size_t size, size_t alignment, PagePermissions permissions) override |
void | FreePages (Address address, size_t size) override |
Address | AllocateSharedPages (Address hint, size_t size, PagePermissions permissions, PlatformSharedMemoryHandle handle, uint64_t offset) override |
void | FreeSharedPages (Address address, size_t size) override |
bool | SetPagePermissions (Address address, size_t size, PagePermissions permissions) override |
bool | AllocateGuardRegion (Address address, size_t size) override |
void | FreeGuardRegion (Address address, size_t size) override |
bool | CanAllocateSubspaces () override |
std::unique_ptr< v8::VirtualAddressSpace > | AllocateSubspace (Address hint, size_t size, size_t alignment, PagePermissions max_page_permissions) override |
bool | RecommitPages (Address address, size_t size, PagePermissions permissions) override |
bool | DiscardSystemPages (Address address, size_t size) override |
bool | DecommitPages (Address address, size_t size) override |
Private Member Functions | |
size_t | mapped_size () const |
size_t | unmapped_size () const |
Address | mapped_base () const |
Address | unmapped_base () const |
bool | Contains (Address outer_start, size_t outer_size, Address inner_start, size_t inner_size) const |
bool | Contains (Address addr, size_t length) const |
bool | MappedRegionContains (Address addr, size_t length) const |
bool | UnmappedRegionContains (Address addr, size_t length) const |
bool | IsUsableSizeForUnmappedRegion (size_t size) const |
Private Attributes | |
const size_t | mapped_size_ |
v8::VirtualAddressSpace * | parent_space_ |
Mutex | mutex_ |
RegionAllocator | region_allocator_ |
RandomNumberGenerator | rng_ |
Emulates a virtual address subspace.
This class is (optionally) backed by a page allocation and emulates a virtual address space that is potentially larger than that mapping. It generally first attempts to satisfy page allocation requests from its backing mapping, but will also attempt to obtain new page mappings inside the unmapped space through page allocation hints if necessary.
Caveat: an emulated subspace violates the invariant that page allocations in an address space will never end up inside a child space and so does not provide the same security gurarantees.
Definition at line 31 of file emulated-virtual-address-subspace.h.
v8::base::EmulatedVirtualAddressSubspace::EmulatedVirtualAddressSubspace | ( | v8::VirtualAddressSpace * | parent_space, |
Address | base, | ||
size_t | mapped_size, | ||
size_t | total_size ) |
Definition at line 13 of file emulated-virtual-address-subspace.cc.
|
override |
Definition at line 31 of file emulated-virtual-address-subspace.cc.
|
override |
Definition at line 147 of file emulated-virtual-address-subspace.cc.
|
override |
Definition at line 46 of file emulated-virtual-address-subspace.cc.
|
override |
Definition at line 107 of file emulated-virtual-address-subspace.cc.
|
override |
Definition at line 174 of file emulated-virtual-address-subspace.cc.
|
override |
Definition at line 168 of file emulated-virtual-address-subspace.cc.
|
inlineprivate |
Definition at line 93 of file emulated-virtual-address-subspace.h.
|
inlineprivate |
Definition at line 87 of file emulated-virtual-address-subspace.h.
|
override |
Definition at line 192 of file emulated-virtual-address-subspace.cc.
|
override |
Definition at line 186 of file emulated-virtual-address-subspace.cc.
|
override |
Definition at line 157 of file emulated-virtual-address-subspace.cc.
|
override |
Definition at line 96 of file emulated-virtual-address-subspace.cc.
|
override |
Definition at line 135 of file emulated-virtual-address-subspace.cc.
|
inlineprivate |
Definition at line 108 of file emulated-virtual-address-subspace.h.
|
inlineprivate |
Definition at line 84 of file emulated-virtual-address-subspace.h.
|
inlineprivate |
Definition at line 81 of file emulated-virtual-address-subspace.h.
|
inlineprivate |
Definition at line 97 of file emulated-virtual-address-subspace.h.
|
override |
Definition at line 40 of file emulated-virtual-address-subspace.cc.
|
override |
Definition at line 180 of file emulated-virtual-address-subspace.cc.
|
override |
Definition at line 141 of file emulated-virtual-address-subspace.cc.
|
override |
Definition at line 35 of file emulated-virtual-address-subspace.cc.
|
inlineprivate |
Definition at line 85 of file emulated-virtual-address-subspace.h.
|
inlineprivate |
Definition at line 82 of file emulated-virtual-address-subspace.h.
|
inlineprivate |
Definition at line 101 of file emulated-virtual-address-subspace.h.
|
private |
Definition at line 113 of file emulated-virtual-address-subspace.h.
|
private |
Definition at line 121 of file emulated-virtual-address-subspace.h.
|
private |
Definition at line 117 of file emulated-virtual-address-subspace.h.
|
private |
Definition at line 125 of file emulated-virtual-address-subspace.h.
|
private |
Definition at line 128 of file emulated-virtual-address-subspace.h.