| Index: src/isolate.cc
|
| diff --git a/src/isolate.cc b/src/isolate.cc
|
| index 60e3379e15a4d848aad2fed45fdadd58c14d7354..5cbfc7be916d8450f45c04dba5f301311c0b60e5 100644
|
| --- a/src/isolate.cc
|
| +++ b/src/isolate.cc
|
| @@ -1692,6 +1692,7 @@ Isolate::Isolate()
|
| #undef ISOLATE_INIT_ARRAY_EXECUTE
|
| }
|
|
|
| +
|
| void Isolate::TearDown() {
|
| TRACE_ISOLATE(tear_down);
|
|
|
| @@ -1727,6 +1728,17 @@ void Isolate::Deinit() {
|
| if (state_ == INITIALIZED) {
|
| TRACE_ISOLATE(deinit);
|
|
|
| + if (FLAG_concurrent_sweeping || FLAG_parallel_sweeping) {
|
| + for (int i = 0; i < FLAG_sweeper_threads; i++) {
|
| + sweeper_thread_[i]->Stop();
|
| + }
|
| +
|
| + for (int i = 0; i < FLAG_sweeper_threads; i++) {
|
| + delete sweeper_thread_[i];
|
| + }
|
| + delete[] sweeper_thread_;
|
| + }
|
| +
|
| if (FLAG_parallel_recompilation) optimizing_compiler_thread_.Stop();
|
|
|
| if (FLAG_hydrogen_stats) HStatistics::Instance()->Print();
|
| @@ -2089,6 +2101,17 @@ bool Isolate::Init(Deserializer* des) {
|
| }
|
|
|
| if (FLAG_parallel_recompilation) optimizing_compiler_thread_.Start();
|
| +
|
| + if (FLAG_parallel_sweeping || FLAG_concurrent_sweeping) {
|
| + if (FLAG_sweeper_threads < 1) {
|
| + FLAG_sweeper_threads = 1;
|
| + }
|
| + sweeper_thread_ = new SweeperThread*[FLAG_sweeper_threads];
|
| + for (int i = 0; i < FLAG_sweeper_threads; i++) {
|
| + sweeper_thread_[i] = new SweeperThread(this);
|
| + sweeper_thread_[i]->Start();
|
| + }
|
| + }
|
| return true;
|
| }
|
|
|
|
|