Upstream version 9.37.197.0
[platform/framework/web/crosswalk.git] / src / v8 / src / sweeper-thread.h
1 // Copyright 2012 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_SWEEPER_THREAD_H_
6 #define V8_SWEEPER_THREAD_H_
7
8 #include "src/base/atomicops.h"
9 #include "src/flags.h"
10 #include "src/platform.h"
11 #include "src/utils.h"
12
13 #include "src/spaces.h"
14
15 #include "src/heap.h"
16
17 namespace v8 {
18 namespace internal {
19
20 class SweeperThread : public Thread {
21  public:
22   explicit SweeperThread(Isolate* isolate);
23   ~SweeperThread() {}
24
25   void Run();
26   void Stop();
27   void StartSweeping();
28   void WaitForSweeperThread();
29   bool SweepingCompleted();
30
31   static int NumberOfThreads(int max_available);
32
33  private:
34   Isolate* isolate_;
35   Heap* heap_;
36   MarkCompactCollector* collector_;
37   Semaphore start_sweeping_semaphore_;
38   Semaphore end_sweeping_semaphore_;
39   Semaphore stop_semaphore_;
40   volatile base::AtomicWord stop_thread_;
41 };
42
43 } }  // namespace v8::internal
44
45 #endif  // V8_SWEEPER_THREAD_H_