Commit 499efdfd authored by Hannes Payer's avatar Hannes Payer Committed by Commit Bot

[heap] Only reclaim inaccessible memory when reducing memory.

Bug: chromium:897074
Change-Id: I65894046064a230847f3e629e56d8a171546aa51
Reviewed-on: https://chromium-review.googlesource.com/c/1293950Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
Commit-Queue: Hannes Payer <hpayer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#56877}
parent b8320b6f
...@@ -15,6 +15,20 @@ ...@@ -15,6 +15,20 @@
namespace v8 { namespace v8 {
namespace internal { namespace internal {
Sweeper::Sweeper(Heap* heap, MajorNonAtomicMarkingState* marking_state)
: heap_(heap),
marking_state_(marking_state),
num_tasks_(0),
pending_sweeper_tasks_semaphore_(0),
incremental_sweeper_pending_(false),
sweeping_in_progress_(false),
num_sweeping_tasks_(0),
stop_sweeper_tasks_(false),
iterability_task_semaphore_(0),
iterability_in_progress_(false),
iterability_task_started_(false),
should_reduce_memory_(heap->ShouldReduceMemory()) {}
Sweeper::PauseOrCompleteScope::PauseOrCompleteScope(Sweeper* sweeper) Sweeper::PauseOrCompleteScope::PauseOrCompleteScope(Sweeper* sweeper)
: sweeper_(sweeper) { : sweeper_(sweeper) {
sweeper_->stop_sweeper_tasks_ = true; sweeper_->stop_sweeper_tasks_ = true;
...@@ -289,7 +303,7 @@ int Sweeper::RawSweep(Page* p, FreeListRebuildingMode free_list_mode, ...@@ -289,7 +303,7 @@ int Sweeper::RawSweep(Page* p, FreeListRebuildingMode free_list_mode,
free_start, static_cast<int>(size), ClearRecordedSlots::kNo, free_start, static_cast<int>(size), ClearRecordedSlots::kNo,
ClearFreedMemoryMode::kClearFreedMemory); ClearFreedMemoryMode::kClearFreedMemory);
} }
p->DiscardUnusedMemory(free_start, size); if (should_reduce_memory_) p->DiscardUnusedMemory(free_start, size);
RememberedSet<OLD_TO_NEW>::RemoveRange(p, free_start, free_end, RememberedSet<OLD_TO_NEW>::RemoveRange(p, free_start, free_end,
SlotSet::KEEP_EMPTY_BUCKETS); SlotSet::KEEP_EMPTY_BUCKETS);
RememberedSet<OLD_TO_OLD>::RemoveRange(p, free_start, free_end, RememberedSet<OLD_TO_OLD>::RemoveRange(p, free_start, free_end,
...@@ -330,7 +344,7 @@ int Sweeper::RawSweep(Page* p, FreeListRebuildingMode free_list_mode, ...@@ -330,7 +344,7 @@ int Sweeper::RawSweep(Page* p, FreeListRebuildingMode free_list_mode,
ClearRecordedSlots::kNo, ClearRecordedSlots::kNo,
ClearFreedMemoryMode::kClearFreedMemory); ClearFreedMemoryMode::kClearFreedMemory);
} }
p->DiscardUnusedMemory(free_start, size); if (should_reduce_memory_) p->DiscardUnusedMemory(free_start, size);
RememberedSet<OLD_TO_NEW>::RemoveRange(p, free_start, p->area_end(), RememberedSet<OLD_TO_NEW>::RemoveRange(p, free_start, p->area_end(),
SlotSet::KEEP_EMPTY_BUCKETS); SlotSet::KEEP_EMPTY_BUCKETS);
RememberedSet<OLD_TO_OLD>::RemoveRange(p, free_start, p->area_end(), RememberedSet<OLD_TO_OLD>::RemoveRange(p, free_start, p->area_end(),
......
...@@ -77,18 +77,7 @@ class Sweeper { ...@@ -77,18 +77,7 @@ class Sweeper {
}; };
enum AddPageMode { REGULAR, READD_TEMPORARY_REMOVED_PAGE }; enum AddPageMode { REGULAR, READD_TEMPORARY_REMOVED_PAGE };
Sweeper(Heap* heap, MajorNonAtomicMarkingState* marking_state) Sweeper(Heap* heap, MajorNonAtomicMarkingState* marking_state);
: heap_(heap),
marking_state_(marking_state),
num_tasks_(0),
pending_sweeper_tasks_semaphore_(0),
incremental_sweeper_pending_(false),
sweeping_in_progress_(false),
num_sweeping_tasks_(0),
stop_sweeper_tasks_(false),
iterability_task_semaphore_(0),
iterability_in_progress_(false),
iterability_task_started_(false) {}
bool sweeping_in_progress() const { return sweeping_in_progress_; } bool sweeping_in_progress() const { return sweeping_in_progress_; }
...@@ -196,6 +185,7 @@ class Sweeper { ...@@ -196,6 +185,7 @@ class Sweeper {
base::Semaphore iterability_task_semaphore_; base::Semaphore iterability_task_semaphore_;
bool iterability_in_progress_; bool iterability_in_progress_;
bool iterability_task_started_; bool iterability_task_started_;
bool should_reduce_memory_;
}; };
} // namespace internal } // namespace internal
......
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