summaryrefslogtreecommitdiff
path: root/deps/v8/src/heap/item-parallel-job.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/heap/item-parallel-job.h')
-rw-r--r--deps/v8/src/heap/item-parallel-job.h11
1 files changed, 6 insertions, 5 deletions
diff --git a/deps/v8/src/heap/item-parallel-job.h b/deps/v8/src/heap/item-parallel-job.h
index 51e0afd401..1ad9d22fa4 100644
--- a/deps/v8/src/heap/item-parallel-job.h
+++ b/deps/v8/src/heap/item-parallel-job.h
@@ -49,17 +49,18 @@ class V8_EXPORT_PRIVATE ItemParallelJob {
virtual ~Item() = default;
// Marks an item as being finished.
- void MarkFinished() { CHECK(state_.TrySetValue(kProcessing, kFinished)); }
+ void MarkFinished() { CHECK_EQ(kProcessing, state_.exchange(kFinished)); }
private:
- enum ProcessingState { kAvailable, kProcessing, kFinished };
+ enum ProcessingState : uintptr_t { kAvailable, kProcessing, kFinished };
bool TryMarkingAsProcessing() {
- return state_.TrySetValue(kAvailable, kProcessing);
+ ProcessingState available = kAvailable;
+ return state_.compare_exchange_strong(available, kProcessing);
}
- bool IsFinished() { return state_.Value() == kFinished; }
+ bool IsFinished() { return state_ == kFinished; }
- base::AtomicValue<ProcessingState> state_{kAvailable};
+ std::atomic<ProcessingState> state_{kAvailable};
friend class ItemParallelJob;
friend class ItemParallelJob::Task;