5#ifndef V8_TASKS_CANCELABLE_TASK_H_
6#define V8_TASKS_CANCELABLE_TASK_H_
9#include <unordered_map>
34 static constexpr Id kInvalidTaskId = 0;
75 void RemoveFinishedTask(Id
id);
118 return CompareExchangeStatus(kWaiting, kRunning,
previous);
126 bool Cancel() {
return CompareExchangeStatus(kWaiting, kCanceled); }
131 bool success = status_.compare_exchange_strong(expected, desired,
132 std::memory_order_acq_rel,
133 std::memory_order_acquire);
139 std::atomic<Status> status_{kWaiting};
171 void Run(
double deadline_in_seconds)
final {
CancelableIdleTask & operator=(const CancelableIdleTask &)=delete
CancelableIdleTask(const CancelableIdleTask &)=delete
virtual void RunInternal(double deadline_in_seconds)=0
CancelableIdleTask(Isolate *isolate)
void Run(double deadline_in_seconds) final
CancelableTaskManager & operator=(const CancelableTaskManager &)=delete
CancelableTaskManager(const CancelableTaskManager &)=delete
std::unordered_map< Id, Cancelable * > cancelable_tasks_
base::ConditionVariable cancelable_tasks_barrier_
CancelableTask(const CancelableTask &)=delete
virtual void RunInternal()=0
CancelableTask & operator=(const CancelableTask &)=delete
CancelableTaskManager::Id id()
Cancelable(const Cancelable &)=delete
Cancelable & operator=(const Cancelable &)=delete
bool CompareExchangeStatus(Status expected, Status desired, Status *previous=nullptr)
const CancelableTaskManager::Id id_
CancelableTaskManager *const parent_
bool TryRun(Status *previous=nullptr)
Cancelable(CancelableTaskManager *parent)
BytecodeSequenceNode * parent_
#define NON_EXPORTED_BASE(code)
#define V8_EXPORT_PRIVATE