| Index: src/isolate.cc
 | 
| diff --git a/src/isolate.cc b/src/isolate.cc
 | 
| index f1928cfed8a8fd260bc6cb0a81114931f4c80f86..d70e19e0ebcdfab65ceb688334da39f7255f901a 100644
 | 
| --- a/src/isolate.cc
 | 
| +++ b/src/isolate.cc
 | 
| @@ -40,6 +40,7 @@
 | 
|  #include "isolate.h"
 | 
|  #include "lithium-allocator.h"
 | 
|  #include "log.h"
 | 
| +#include "marking-thread.h"
 | 
|  #include "messages.h"
 | 
|  #include "platform.h"
 | 
|  #include "regexp-stack.h"
 | 
| @@ -1653,6 +1654,7 @@ Isolate::Isolate()
 | 
|        context_exit_happened_(false),
 | 
|        deferred_handles_head_(NULL),
 | 
|        optimizing_compiler_thread_(this),
 | 
| +      marking_thread_(NULL),
 | 
|        sweeper_thread_(NULL) {
 | 
|    TRACE_ISOLATE(constructor);
 | 
|  
 | 
| @@ -1745,6 +1747,14 @@ void Isolate::Deinit() {
 | 
|        delete[] sweeper_thread_;
 | 
|      }
 | 
|  
 | 
| +    if (FLAG_parallel_marking) {
 | 
| +      for (int i = 0; i < FLAG_marking_threads; i++) {
 | 
| +        marking_thread_[i]->Stop();
 | 
| +        delete marking_thread_[i];
 | 
| +      }
 | 
| +      delete[] marking_thread_;
 | 
| +    }
 | 
| +
 | 
|      if (FLAG_parallel_recompilation) optimizing_compiler_thread_.Stop();
 | 
|  
 | 
|      if (FLAG_hydrogen_stats) HStatistics::Instance()->Print();
 | 
| @@ -2115,6 +2125,17 @@ bool Isolate::Init(Deserializer* des) {
 | 
|  
 | 
|    if (FLAG_parallel_recompilation) optimizing_compiler_thread_.Start();
 | 
|  
 | 
| +  if (FLAG_parallel_marking) {
 | 
| +    if (FLAG_marking_threads < 1) {
 | 
| +      FLAG_marking_threads = 1;
 | 
| +    }
 | 
| +    marking_thread_ = new MarkingThread*[FLAG_marking_threads];
 | 
| +    for (int i = 0; i < FLAG_marking_threads; i++) {
 | 
| +      marking_thread_[i] = new MarkingThread(this);
 | 
| +      marking_thread_[i]->Start();
 | 
| +    }
 | 
| +  }
 | 
| +
 | 
|    if (FLAG_parallel_sweeping || FLAG_concurrent_sweeping) {
 | 
|      if (FLAG_sweeper_threads < 1) {
 | 
|        FLAG_sweeper_threads = 1;
 | 
| 
 |