5#ifndef V8_LIBPLATFORM_DEFAULT_JOB_H_
6#define V8_LIBPLATFORM_DEFAULT_JOB_H_
20 :
public std::enable_shared_from_this<DefaultJobState> {
25 : outer_(outer), is_joining_thread_(is_joining_thread) {}
29 outer_->NotifyConcurrencyIncrease();
35 DCHECK(!was_told_to_yield_);
38 outer_->is_canceled_.load(std::memory_order_relaxed);
39 return was_told_to_yield_;
41 uint8_t GetTaskId()
override;
45 static constexpr uint8_t kInvalidTaskId =
46 std::numeric_limits<uint8_t>::max();
49 uint8_t task_id_ = kInvalidTaskId;
51 bool was_told_to_yield_ =
false;
58 void NotifyConcurrencyIncrease();
59 uint8_t AcquireTaskId();
60 void ReleaseTaskId(uint8_t task_id);
64 void CancelAndDetach();
70 bool CanRunFirstTask();
80 size_t CappedMaxConcurrency(
size_t worker_count)
const;
91 size_t active_workers_ = 0;
93 size_t pending_tasks_ = 0;
95 std::atomic_bool is_canceled_{
false};
101 std::atomic<uint32_t> assigned_task_ids_{0};
113 state_->NotifyConcurrencyIncrease();
116 void Join()
override;
117 void Cancel()
override;
118 void CancelAndDetach()
override;
119 bool IsActive()
override;
140 auto shared_state =
state_.lock();
141 if (!shared_state)
return;
142 if (!shared_state->CanRunFirstTask())
return;
148 }
while (shared_state->DidRunTask());
virtual void Run(JobDelegate *delegate)=0
enum v8::internal::@1270::DeoptimizableCodeIterator::@67 state_
#define DCHECK(condition)