Commit abd3022c authored by Michael Lippautz's avatar Michael Lippautz Committed by Commit Bot

PCScan: Move ctor to .cc file

Explicit template instantiations are in place to allow moving slow paths
into the .cc file.

Bug: 11297512
Change-Id: Id7f4c9912098ff550fae62fbe024a4cafe5fc56f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2542787
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Anton Bikineev <bikineev@chromium.org>
Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Reviewed-by: default avatarBartek Nowierski <bartekn@chromium.org>
Cr-Commit-Position: refs/heads/master@{#828170}
parent 13bf68e3
...@@ -392,6 +392,22 @@ PCScan<thread_safe>::PCScanTask::PCScanTask(PCScan& pcscan, Root& root) ...@@ -392,6 +392,22 @@ PCScan<thread_safe>::PCScanTask::PCScanTask(PCScan& pcscan, Root& root)
template <bool thread_safe> template <bool thread_safe>
PCScan<thread_safe>::~PCScan() = default; PCScan<thread_safe>::~PCScan() = default;
template <bool thread_safe>
PCScan<thread_safe>::PCScan(Root* root) : root_(root) {
root->lock_.AssertAcquired();
// Commit quarantine bitmaps.
size_t quarantine_bitmaps_size_to_commit = CommittedQuarantineBitmapsSize();
for (auto* super_page_extent = root->first_extent; super_page_extent;
super_page_extent = super_page_extent->next) {
for (char* super_page = super_page_extent->super_page_base;
super_page != super_page_extent->super_pages_end;
super_page += kSuperPageSize) {
SetSystemPagesAccess(internal::SuperPageQuarantineBitmaps(super_page),
quarantine_bitmaps_size_to_commit, PageReadWrite);
}
}
}
template <bool thread_safe> template <bool thread_safe>
void PCScan<thread_safe>::PCScanTask::RunOnce() && { void PCScan<thread_safe>::PCScanTask::RunOnce() && {
TRACE_EVENT0("partition_alloc", "PCScan"); TRACE_EVENT0("partition_alloc", "PCScan");
......
...@@ -90,22 +90,6 @@ class BASE_EXPORT PCScan final { ...@@ -90,22 +90,6 @@ class BASE_EXPORT PCScan final {
template <bool thread_safe> template <bool thread_safe>
constexpr size_t PCScan<thread_safe>::QuarantineData::kQuarantineSizeMinLimit; constexpr size_t PCScan<thread_safe>::QuarantineData::kQuarantineSizeMinLimit;
template <bool thread_safe>
PCScan<thread_safe>::PCScan(Root* root) : root_(root) {
root->lock_.AssertAcquired();
// Commit quarantine bitmaps.
size_t quarantine_bitmaps_size_to_commit = CommittedQuarantineBitmapsSize();
for (auto* super_page_extent = root->first_extent; super_page_extent;
super_page_extent = super_page_extent->next) {
for (char* super_page = super_page_extent->super_page_base;
super_page != super_page_extent->super_pages_end;
super_page += kSuperPageSize) {
SetSystemPagesAccess(internal::SuperPageQuarantineBitmaps(super_page),
quarantine_bitmaps_size_to_commit, PageReadWrite);
}
}
}
template <bool thread_safe> template <bool thread_safe>
bool PCScan<thread_safe>::QuarantineData::Account(size_t size) { bool PCScan<thread_safe>::QuarantineData::Account(size_t size) {
size_t size_before = current_size_.fetch_add(size, std::memory_order_relaxed); size_t size_before = current_size_.fetch_add(size, std::memory_order_relaxed);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment