Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(470)

Unified Diff: src/heap/spaces.cc

Issue 2365603002: [heap] Reland Concurrently free empty typed slot set chunks. (Closed)
Patch Set: make typed slot set field atomic Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/heap/spaces.cc
diff --git a/src/heap/spaces.cc b/src/heap/spaces.cc
index 8982a2953273abbe35993b57ab63ee43d42ae0d7..1149dc51c367803c904b6c6ed5b0c0ba5dd6f401 100644
--- a/src/heap/spaces.cc
+++ b/src/heap/spaces.cc
@@ -510,7 +510,7 @@ MemoryChunk* MemoryChunk::Initialize(Heap* heap, Address base, size_t size,
chunk->InitializeReservedMemory();
chunk->old_to_new_slots_ = nullptr;
chunk->old_to_old_slots_ = nullptr;
- chunk->typed_old_to_new_slots_ = nullptr;
+ chunk->typed_old_to_new_slots_.SetValue(nullptr);
chunk->typed_old_to_old_slots_ = nullptr;
chunk->skip_list_ = nullptr;
chunk->write_barrier_counter_ = kWriteBarrierCounterGranularity;
@@ -1077,7 +1077,7 @@ void MemoryChunk::ReleaseAllocatedMemory() {
}
if (old_to_new_slots_ != nullptr) ReleaseOldToNewSlots();
if (old_to_old_slots_ != nullptr) ReleaseOldToOldSlots();
- if (typed_old_to_new_slots_ != nullptr) ReleaseTypedOldToNewSlots();
+ if (typed_old_to_new_slots_.Value() != nullptr) ReleaseTypedOldToNewSlots();
if (typed_old_to_old_slots_ != nullptr) ReleaseTypedOldToOldSlots();
if (local_tracker_ != nullptr) ReleaseLocalTracker();
}
@@ -1113,13 +1113,14 @@ void MemoryChunk::ReleaseOldToOldSlots() {
}
void MemoryChunk::AllocateTypedOldToNewSlots() {
- DCHECK(nullptr == typed_old_to_new_slots_);
- typed_old_to_new_slots_ = new TypedSlotSet(address());
+ DCHECK(nullptr == typed_old_to_new_slots_.Value());
+ typed_old_to_new_slots_.SetValue(new TypedSlotSet(address()));
}
void MemoryChunk::ReleaseTypedOldToNewSlots() {
- delete typed_old_to_new_slots_;
- typed_old_to_new_slots_ = nullptr;
+ TypedSlotSet* typed_old_to_new_slots = typed_old_to_new_slots_.Value();
+ delete typed_old_to_new_slots;
+ typed_old_to_new_slots_.SetValue(nullptr);
}
void MemoryChunk::AllocateTypedOldToOldSlots() {

Powered by Google App Engine
This is Rietveld 408576698