blob: f45039c8703b015a7b49b142135ef6513c1a3c70 [file] [log] [blame]
// 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 "src/heap/cppgc/raw-heap.h"
#include "src/heap/cppgc/heap-space.h"
namespace cppgc {
namespace internal {
// static
constexpr size_t RawHeap::kNumberOfRegularSpaces;
RawHeap::RawHeap(
HeapBase* heap,
const std::vector<std::unique_ptr<CustomSpaceBase>>& custom_spaces)
: main_heap_(heap) {
size_t i = 0;
for (; i < static_cast<size_t>(RegularSpaceType::kLarge); ++i) {
spaces_.push_back(std::make_unique<NormalPageSpace>(this, i, false));
}
spaces_.push_back(std::make_unique<LargePageSpace>(
this, static_cast<size_t>(RegularSpaceType::kLarge)));
DCHECK_EQ(kNumberOfRegularSpaces, spaces_.size());
for (size_t j = 0; j < custom_spaces.size(); j++) {
spaces_.push_back(std::make_unique<NormalPageSpace>(
this, kNumberOfRegularSpaces + j, custom_spaces[j]->IsCompactable()));
}
}
RawHeap::~RawHeap() = default;
} // namespace internal
} // namespace cppgc