V8 Project
default-platform.h
Go to the documentation of this file.
1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef V8_LIBPLATFORM_DEFAULT_PLATFORM_H_
6 #define V8_LIBPLATFORM_DEFAULT_PLATFORM_H_
7 
8 #include <map>
9 #include <queue>
10 #include <vector>
11 
12 #include "include/v8-platform.h"
13 #include "src/base/macros.h"
16 
17 namespace v8 {
18 namespace platform {
19 
20 class TaskQueue;
21 class Thread;
22 class WorkerThread;
23 
24 class DefaultPlatform : public Platform {
25  public:
27  virtual ~DefaultPlatform();
28 
29  void SetThreadPoolSize(int thread_pool_size);
30 
31  void EnsureInitialized();
32 
33  bool PumpMessageLoop(v8::Isolate* isolate);
34 
35  // v8::Platform implementation.
36  virtual void CallOnBackgroundThread(
37  Task* task, ExpectedRuntime expected_runtime) OVERRIDE;
38  virtual void CallOnForegroundThread(v8::Isolate* isolate,
39  Task* task) OVERRIDE;
40 
41  private:
42  static const int kMaxThreadPoolSize;
43 
44  base::Mutex lock_;
47  std::vector<WorkerThread*> thread_pool_;
49  std::map<v8::Isolate*, std::queue<Task*> > main_thread_queue_;
50 
52 };
53 
54 
55 } } // namespace v8::platform
56 
57 
58 #endif // V8_LIBPLATFORM_DEFAULT_PLATFORM_H_
Isolate represents an isolated instance of the V8 engine.
Definition: v8.h:4356
V8 Platform abstraction layer.
Definition: v8-platform.h:28
ExpectedRuntime
This enum is used to indicate whether a task is potentially long running, or causes a long wait.
Definition: v8-platform.h:35
A Task represents a unit of work.
Definition: v8-platform.h:15
std::vector< WorkerThread * > thread_pool_
std::map< v8::Isolate *, std::queue< Task * > > main_thread_queue_
virtual void CallOnBackgroundThread(Task *task, ExpectedRuntime expected_runtime) OVERRIDE
Schedules a task to be invoked on a background thread.
void SetThreadPoolSize(int thread_pool_size)
bool PumpMessageLoop(v8::Isolate *isolate)
DISALLOW_COPY_AND_ASSIGN(DefaultPlatform)
virtual void CallOnForegroundThread(v8::Isolate *isolate, Task *task) OVERRIDE
Schedules a task to be invoked on a foreground thread wrt a specific |isolate|.
static const int kMaxThreadPoolSize
#define OVERRIDE
Debugger support for the V8 JavaScript engine.
Definition: accessors.cc:20