v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
v8::base::EmulatedVirtualAddressSubspace Class Referencefinal

#include <emulated-virtual-address-subspace.h>

Inheritance diagram for v8::base::EmulatedVirtualAddressSubspace:
Collaboration diagram for v8::base::EmulatedVirtualAddressSubspace:

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::VirtualAddressSpaceAllocateSubspace (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::VirtualAddressSpaceparent_space_
 
Mutex mutex_
 
RegionAllocator region_allocator_
 
RandomNumberGenerator rng_
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ EmulatedVirtualAddressSubspace()

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.

Here is the call graph for this function:

◆ ~EmulatedVirtualAddressSubspace()

v8::base::EmulatedVirtualAddressSubspace::~EmulatedVirtualAddressSubspace ( )
override

Definition at line 31 of file emulated-virtual-address-subspace.cc.

Here is the call graph for this function:

Member Function Documentation

◆ AllocateGuardRegion()

bool v8::base::EmulatedVirtualAddressSubspace::AllocateGuardRegion ( Address address,
size_t size )
override

Definition at line 147 of file emulated-virtual-address-subspace.cc.

Here is the call graph for this function:

◆ AllocatePages()

Address v8::base::EmulatedVirtualAddressSubspace::AllocatePages ( Address hint,
size_t size,
size_t alignment,
PagePermissions permissions )
override

Definition at line 46 of file emulated-virtual-address-subspace.cc.

Here is the call graph for this function:

◆ AllocateSharedPages()

Address v8::base::EmulatedVirtualAddressSubspace::AllocateSharedPages ( Address hint,
size_t size,
PagePermissions permissions,
PlatformSharedMemoryHandle handle,
uint64_t offset )
override

Definition at line 107 of file emulated-virtual-address-subspace.cc.

Here is the call graph for this function:

◆ AllocateSubspace()

std::unique_ptr< v8::VirtualAddressSpace > v8::base::EmulatedVirtualAddressSubspace::AllocateSubspace ( Address hint,
size_t size,
size_t alignment,
PagePermissions max_page_permissions )
override

Definition at line 174 of file emulated-virtual-address-subspace.cc.

◆ CanAllocateSubspaces()

bool v8::base::EmulatedVirtualAddressSubspace::CanAllocateSubspaces ( )
override

Definition at line 168 of file emulated-virtual-address-subspace.cc.

◆ Contains() [1/2]

bool v8::base::EmulatedVirtualAddressSubspace::Contains ( Address addr,
size_t length ) const
inlineprivate

Definition at line 93 of file emulated-virtual-address-subspace.h.

◆ Contains() [2/2]

bool v8::base::EmulatedVirtualAddressSubspace::Contains ( Address outer_start,
size_t outer_size,
Address inner_start,
size_t inner_size ) const
inlineprivate

Definition at line 87 of file emulated-virtual-address-subspace.h.

Here is the caller graph for this function:

◆ DecommitPages()

bool v8::base::EmulatedVirtualAddressSubspace::DecommitPages ( Address address,
size_t size )
override

Definition at line 192 of file emulated-virtual-address-subspace.cc.

Here is the call graph for this function:

◆ DiscardSystemPages()

bool v8::base::EmulatedVirtualAddressSubspace::DiscardSystemPages ( Address address,
size_t size )
override

Definition at line 186 of file emulated-virtual-address-subspace.cc.

Here is the call graph for this function:

◆ FreeGuardRegion()

void v8::base::EmulatedVirtualAddressSubspace::FreeGuardRegion ( Address address,
size_t size )
override

Definition at line 157 of file emulated-virtual-address-subspace.cc.

Here is the call graph for this function:

◆ FreePages()

void v8::base::EmulatedVirtualAddressSubspace::FreePages ( Address address,
size_t size )
override

Definition at line 96 of file emulated-virtual-address-subspace.cc.

Here is the call graph for this function:

◆ FreeSharedPages()

void v8::base::EmulatedVirtualAddressSubspace::FreeSharedPages ( Address address,
size_t size )
override

Definition at line 135 of file emulated-virtual-address-subspace.cc.

Here is the call graph for this function:

◆ IsUsableSizeForUnmappedRegion()

bool v8::base::EmulatedVirtualAddressSubspace::IsUsableSizeForUnmappedRegion ( size_t size) const
inlineprivate

Definition at line 108 of file emulated-virtual-address-subspace.h.

Here is the caller graph for this function:

◆ mapped_base()

Address v8::base::EmulatedVirtualAddressSubspace::mapped_base ( ) const
inlineprivate

Definition at line 84 of file emulated-virtual-address-subspace.h.

◆ mapped_size()

size_t v8::base::EmulatedVirtualAddressSubspace::mapped_size ( ) const
inlineprivate

Definition at line 81 of file emulated-virtual-address-subspace.h.

Here is the caller graph for this function:

◆ MappedRegionContains()

bool v8::base::EmulatedVirtualAddressSubspace::MappedRegionContains ( Address addr,
size_t length ) const
inlineprivate

Definition at line 97 of file emulated-virtual-address-subspace.h.

Here is the caller graph for this function:

◆ RandomPageAddress()

Address v8::base::EmulatedVirtualAddressSubspace::RandomPageAddress ( )
override

Definition at line 40 of file emulated-virtual-address-subspace.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ RecommitPages()

bool v8::base::EmulatedVirtualAddressSubspace::RecommitPages ( Address address,
size_t size,
PagePermissions permissions )
override

Definition at line 180 of file emulated-virtual-address-subspace.cc.

Here is the call graph for this function:

◆ SetPagePermissions()

bool v8::base::EmulatedVirtualAddressSubspace::SetPagePermissions ( Address address,
size_t size,
PagePermissions permissions )
override

Definition at line 141 of file emulated-virtual-address-subspace.cc.

Here is the call graph for this function:

◆ SetRandomSeed()

void v8::base::EmulatedVirtualAddressSubspace::SetRandomSeed ( int64_t seed)
override

Definition at line 35 of file emulated-virtual-address-subspace.cc.

Here is the call graph for this function:

◆ unmapped_base()

Address v8::base::EmulatedVirtualAddressSubspace::unmapped_base ( ) const
inlineprivate

Definition at line 85 of file emulated-virtual-address-subspace.h.

◆ unmapped_size()

size_t v8::base::EmulatedVirtualAddressSubspace::unmapped_size ( ) const
inlineprivate

Definition at line 82 of file emulated-virtual-address-subspace.h.

Here is the caller graph for this function:

◆ UnmappedRegionContains()

bool v8::base::EmulatedVirtualAddressSubspace::UnmappedRegionContains ( Address addr,
size_t length ) const
inlineprivate

Definition at line 101 of file emulated-virtual-address-subspace.h.

Here is the caller graph for this function:

Member Data Documentation

◆ mapped_size_

const size_t v8::base::EmulatedVirtualAddressSubspace::mapped_size_
private

Definition at line 113 of file emulated-virtual-address-subspace.h.

◆ mutex_

Mutex v8::base::EmulatedVirtualAddressSubspace::mutex_
private

Definition at line 121 of file emulated-virtual-address-subspace.h.

◆ parent_space_

v8::VirtualAddressSpace* v8::base::EmulatedVirtualAddressSubspace::parent_space_
private

Definition at line 117 of file emulated-virtual-address-subspace.h.

◆ region_allocator_

RegionAllocator v8::base::EmulatedVirtualAddressSubspace::region_allocator_
private

Definition at line 125 of file emulated-virtual-address-subspace.h.

◆ rng_

RandomNumberGenerator v8::base::EmulatedVirtualAddressSubspace::rng_
private

Definition at line 128 of file emulated-virtual-address-subspace.h.


The documentation for this class was generated from the following files: