Lines Matching refs:job

95 // If the SharedFunctionInfo's UncompiledData has a job slot, then write into
96 // it. Otherwise, allocate a new UncompiledData with a job slot, and then write
97 // into that. Since we have two optional slots (preparse data and job), this
104 // The easy cases -- we already have a job slot, so can write into it and
116 // preparse data as appropriate), set the job pointer on that, and update
159 Job* job = new Job(std::make_unique<BackgroundCompileTask>(
165 reinterpret_cast<Address>(job));
172 PrintF("LazyCompileDispatcher: enqueued job for ");
178 all_jobs_.insert(job);
180 pending_background_jobs_.push_back(job);
189 Job* job = nullptr;
192 job = reinterpret_cast<Job*>(
193 UncompiledDataWithPreparseDataAndJob::cast(function_data).job());
195 job = reinterpret_cast<Job*>(
196 UncompiledDataWithoutPreparseDataWithJob::cast(function_data).job());
198 return job != nullptr;
202 Job* job, const base::MutexGuard& lock) {
207 if (!job->is_running_on_background()) {
208 if (job->state == Job::State::kPending) {
210 pending_background_jobs_.end(), job),
217 pending_background_jobs_.end(), job));
218 job->state = Job::State::kPendingToRunOnForeground;
221 DCHECK_EQ(job->state, Job::State::kReadyToFinalize);
223 std::count(finalizable_jobs_.begin(), finalizable_jobs_.end(), job),
229 std::remove(finalizable_jobs_.begin(), finalizable_jobs_.end(), job));
230 job->state = Job::State::kFinalizingNow;
235 main_thread_blocking_on_job_ = job;
240 DCHECK_EQ(job->state, Job::State::kReadyToFinalize);
241 DCHECK_EQ(std::count(finalizable_jobs_.begin(), finalizable_jobs_.end(), job),
247 std::remove(finalizable_jobs_.begin(), finalizable_jobs_.end(), job));
248 job->state = Job::State::kFinalizingNow;
261 Job* job;
265 job = GetJobFor(function, lock);
266 WaitForJobIfRunningOnBackground(job, lock);
269 if (job->state == Job::State::kPendingToRunOnForeground) {
270 job->task->RunOnMainThread(isolate_);
271 job->state = Job::State::kFinalizingNow;
277 pending_background_jobs_.end(), job),
280 std::count(finalizable_jobs_.begin(), finalizable_jobs_.end(), job), 0);
281 DCHECK_EQ(job->state, Job::State::kFinalizingNow);
285 job->task.get(), isolate_, Compiler::KEEP_EXCEPTION);
286 job->state = Job::State::kFinalized;
289 DeleteJob(job);
304 PrintF("LazyCompileDispatcher: aborting job for ");
310 Job* job = GetJobFor(shared_info, lock);
311 if (job->is_running_on_background()) {
313 // and remove job then.
314 job->state = Job::State::kAbortRequested;
316 if (job->state == Job::State::kPending) {
318 pending_background_jobs_.end(), job),
323 pending_background_jobs_.end(), job));
324 job->state = Job::State::kAbortingNow;
326 } else if (job->state == Job::State::kReadyToFinalize) {
328 std::count(finalizable_jobs_.begin(), finalizable_jobs_.end(), job),
332 std::remove(finalizable_jobs_.begin(), finalizable_jobs_.end(), job));
333 job->state = Job::State::kAbortingNow;
337 job->task->AbortFunction();
338 job->state = Job::State::kFinalized;
339 DeleteJob(job, lock);
349 for (Job* job : pending_background_jobs_) {
350 job->task->AbortFunction();
351 job->state = Job::State::kFinalized;
352 DeleteJob(job, lock);
355 for (Job* job : finalizable_jobs_) {
356 job->task->AbortFunction();
357 job->state = Job::State::kFinalized;
358 DeleteJob(job, lock);
361 for (Job* job : jobs_to_dispose_) {
362 delete job;
379 UncompiledDataWithPreparseDataAndJob::cast(function_data).job());
382 UncompiledDataWithoutPreparseDataWithJob::cast(function_data).job());
411 Job* job = nullptr;
416 job = pending_background_jobs_.back();
418 DCHECK_EQ(job->state, Job::State::kPending);
420 job->state = Job::State::kRunning;
432 job->task->Run(&isolate, &reusable_state);
436 if (job->state == Job::State::kRunning) {
437 job->state = Job::State::kReadyToFinalize;
439 // if the job has a shared function info registered.
441 DCHECK_EQ(job->state, Job::State::kAbortRequested);
442 job->state = Job::State::kAborted;
444 finalizable_jobs_.push_back(job);
447 if (main_thread_blocking_on_job_ == job) {
457 Job* job = nullptr;
461 job = jobs_to_dispose_.back();
467 delete job;
479 Job* job = finalizable_jobs_.back();
481 DCHECK(job->state == Job::State::kReadyToFinalize ||
482 job->state == Job::State::kAborted);
483 if (job->state == Job::State::kReadyToFinalize) {
484 job->state = Job::State::kFinalizingNow;
486 DCHECK_EQ(job->state, Job::State::kAborted);
487 job->state = Job::State::kAbortingNow;
489 return job;
493 Job* job = PopSingleFinalizeJob();
494 if (job == nullptr) return false;
497 PrintF("LazyCompileDispatcher: idle finalizing job\n");
500 if (job->state == Job::State::kFinalizingNow) {
502 Compiler::FinalizeBackgroundCompileTask(job->task.get(), isolate_,
505 DCHECK_EQ(job->state, Job::State::kAbortingNow);
506 job->task->AbortFunction();
508 job->state = Job::State::kFinalized;
509 DeleteJob(job);
527 // Find a job which is pending finalization and has a shared function info
539 void LazyCompileDispatcher::DeleteJob(Job* job) {
540 DCHECK(job->state == Job::State::kFinalized);
542 DeleteJob(job, lock);
545 void LazyCompileDispatcher::DeleteJob(Job* job, const base::MutexGuard&) {
546 DCHECK(job->state == Job::State::kFinalized);
548 all_jobs_.erase(job);
550 jobs_to_dispose_.push_back(job);
562 for (Job* job : all_jobs_) {
563 switch (job->state) {