// Copyright 2020 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. #include "include/cppgc/internal/caged-heap-local-data.h" #include #include #include "include/cppgc/platform.h" #include "src/base/macros.h" namespace cppgc { namespace internal { #if defined(CPPGC_YOUNG_GENERATION) static_assert( std::is_trivially_default_constructible::value, "To support lazy committing, AgeTable must be trivially constructible"); void AgeTable::Reset(PageAllocator* allocator) { // TODO(chromium:1029379): Consider MADV_DONTNEED instead of MADV_FREE on // POSIX platforms. std::fill(table_.begin(), table_.end(), Age::kOld); const uintptr_t begin = RoundUp(reinterpret_cast(table_.begin()), allocator->CommitPageSize()); const uintptr_t end = RoundDown(reinterpret_cast(table_.end()), allocator->CommitPageSize()); allocator->DiscardSystemPages(reinterpret_cast(begin), end - begin); } #endif } // namespace internal } // namespace cppgc