// Copyright 2018 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_BOUNDED_PAGE_ALLOCATOR_H_ #define V8_BASE_BOUNDED_PAGE_ALLOCATOR_H_ #include "include/v8-platform.h" #include "src/base/platform/mutex.h" #include "src/base/region-allocator.h" namespace v8 { namespace base { // Defines the page initialization mode of a BoundedPageAllocator. enum class PageInitializationMode { … }; // Defines how BoundedPageAllocator frees pages when FreePages or ReleasePages // is requested. enum class PageFreeingMode { … }; // This is a v8::PageAllocator implementation that allocates pages within the // pre-reserved region of virtual space. This class requires the virtual space // to be kept reserved during the lifetime of this object. // The main application of bounded page allocator are // - V8 heap pointer compression which requires the whole V8 heap to be // allocated within a contiguous range of virtual address space, // - executable page allocation, which allows to use PC-relative 32-bit code // displacement on certain 64-bit platforms. // Bounded page allocator uses other page allocator instance for doing actual // page allocations. // The implementation is thread-safe. class V8_BASE_EXPORT BoundedPageAllocator : public v8::PageAllocator { … }; } // namespace base } // namespace v8 #endif // V8_BASE_BOUNDED_PAGE_ALLOCATOR_H_