v8
10.1.124 (node 18.2.0)
V8 is Google's open source JavaScript engine
|
#include <v8-platform.h>
Data Structures | |
class | SharedMemory |
class | SharedMemoryMapping |
Public Types | |
enum | Permission { kNoAccess , kRead , kReadWrite , kReadWriteExecute , kReadExecute , kNoAccessWillJitLater } |
Public Member Functions | |
virtual | ~PageAllocator ()=default |
virtual size_t | AllocatePageSize ()=0 |
virtual size_t | CommitPageSize ()=0 |
virtual void | SetRandomMmapSeed (int64_t seed)=0 |
virtual void * | GetRandomMmapAddr ()=0 |
virtual void * | AllocatePages (void *address, size_t length, size_t alignment, Permission permissions)=0 |
virtual bool | FreePages (void *address, size_t length)=0 |
virtual bool | ReleasePages (void *address, size_t length, size_t new_length)=0 |
virtual bool | SetPermissions (void *address, size_t length, Permission permissions)=0 |
virtual bool | DiscardSystemPages (void *address, size_t size) |
virtual bool | DecommitPages (void *address, size_t size)=0 |
virtual bool | ReserveForSharedMemoryMapping (void *address, size_t size) |
virtual std::unique_ptr< SharedMemory > | AllocateSharedPages (size_t length, const void *original_address) |
virtual bool | CanAllocateSharedPages () |
A V8 memory page allocator.
Can be implemented by an embedder to manage large host OS allocations.
Definition at line 362 of file v8-platform.h.
enum Permission |
Memory permissions.
Enumerator | |
---|---|
kNoAccess | |
kRead | |
kReadWrite | |
kReadWriteExecute | |
kReadExecute | |
kNoAccessWillJitLater |
Definition at line 393 of file v8-platform.h.
|
virtualdefault |
|
pure virtual |
Allocates memory in range with the given alignment and permission.
|
pure virtual |
Gets the page granularity for AllocatePages and FreePages. Addresses and lengths for those calls should be multiples of AllocatePageSize().
|
inlinevirtual |
INTERNAL ONLY: This interface has not been stabilised and may change without notice from one release to another without being deprecated first.
Allocates shared memory pages. Not all PageAllocators need support this and so this method need not be overridden. Allocates a new read-only shared memory region of size |length| and copies the memory at |original_address| into it.
Definition at line 499 of file v8-platform.h.
|
inlinevirtual |
INTERNAL ONLY: This interface has not been stabilised and may change without notice from one release to another without being deprecated first.
If not overridden and changed to return true, V8 will not attempt to call AllocateSharedPages or RemapSharedPages. If overridden, AllocateSharedPages and RemapSharedPages must also be overridden.
Definition at line 512 of file v8-platform.h.
|
pure virtual |
Gets the page granularity for SetPermissions and ReleasePages. Addresses and lengths for those calls should be multiples of CommitPageSize().
|
pure virtual |
Decommits any wired memory pages in the given range, allowing the OS to reclaim them, and marks the region as inacessible (kNoAccess). The address range stays reserved and can be accessed again later by changing its permissions. However, in that case the memory content is guaranteed to be zero-initialized again. The memory must have been previously allocated by a call to AllocatePages. Returns true on success, false otherwise.
|
inlinevirtual |
Frees memory in the given [address, address + size) range. address and size should be operating system page-aligned. The next write to this memory area brings the memory transparently back. This should be treated as a hint to the OS that the pages are no longer needed. It does not guarantee that the pages will be discarded immediately or at all.
Definition at line 439 of file v8-platform.h.
|
pure virtual |
Frees memory in a range that was allocated by a call to AllocatePages.
|
pure virtual |
Returns a randomized address, suitable for memory allocation under ASLR. The address will be aligned to AllocatePageSize.
|
pure virtual |
Releases memory in a range that was allocated by a call to AllocatePages.
|
inlinevirtual |
INTERNAL ONLY: This interface has not been stabilised and may change without notice from one release to another without being deprecated first.
Reserve pages at a fixed address returning whether the reservation is possible. The reserved memory is detached from the PageAllocator and so should not be freed by it. It's intended for use with SharedMemory::RemapTo, where ~SharedMemoryMapping would free the memory.
Definition at line 486 of file v8-platform.h.
|
pure virtual |
Sets permissions on pages in an allocated range.
|
pure virtual |
Sets the random seed so that GetRandomMmapAddr() will generate repeatable sequences of random mmap addresses.