// Copyright 2021 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef V8_BASE_EMULATED_VIRTUAL_ADDRESS_SUBSPACE_H_ #define V8_BASE_EMULATED_VIRTUAL_ADDRESS_SUBSPACE_H_ #include "include/v8-platform.h" #include "src/base/base-export.h" #include "src/base/compiler-specific.h" #include "src/base/platform/mutex.h" #include "src/base/region-allocator.h" #include "src/base/virtual-address-space.h" namespace v8 { namespace base { /** * 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. */ class V8_BASE_EXPORT EmulatedVirtualAddressSubspace final : public NON_EXPORTED_BASE(::v8::VirtualAddressSpace) { … }; } // namespace base } // namespace v8 #endif // V8_BASE_EMULATED_VIRTUAL_ADDRESS_SUBSPACE_H_