1727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease// Copyright 2013 the V8 project authors. All rights reserved.
2727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease// Use of this source code is governed by a BSD-style license that can be
3727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease// found in the LICENSE file.
4727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
5727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#include "src/libplatform/worker-thread.h"
6727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
79c745321260bb728ab1cd1c8fd5f075854b2ad49Behdad Esfahbod#include "include/v8-platform.h"
8727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease#include "src/libplatform/task-queue.h"
9727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
10727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Leasenamespace v8 {
11727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Leasenamespace platform {
12727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
13727dee178a392d20eb050d0c446f2fcc29058fa1Victoria LeaseWorkerThread::WorkerThread(TaskQueue* queue)
14727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease    : Thread(Options("V8 WorkerThread")), queue_(queue) {
15727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  Start();
16727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease}
17727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
18727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
19727dee178a392d20eb050d0c446f2fcc29058fa1Victoria LeaseWorkerThread::~WorkerThread() {
20727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  Join();
21727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease}
22727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
23727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
24727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Leasevoid WorkerThread::Run() {
25727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  while (Task* task = queue_->GetNext()) {
26727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease    task->Run();
27727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease    delete task;
28727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease  }
29727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease}
30727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease
31727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease} }  // namespace v8::platform
32727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease