| Index: src/v8.cc
|
| diff --git a/src/v8.cc b/src/v8.cc
|
| index 6c5375dd4b112974c6f4de5be8c9d956b297853b..62330c32d482aa9a1a74ba70f38d769bfff240da 100644
|
| --- a/src/v8.cc
|
| +++ b/src/v8.cc
|
| @@ -79,24 +79,16 @@ bool V8::Initialize(Deserializer* des) {
|
| }
|
|
|
|
|
| -bool V8::TearDown() {
|
| - Isolate* isolate = Isolate::UncheckedCurrent();
|
| - if (isolate != NULL) {
|
| - ASSERT(isolate->IsDefaultIsolate());
|
| - if (isolate->IsInitialized()) isolate->TearDown();
|
| - delete isolate;
|
| - }
|
| -
|
| - // V8 was never initialized, nothing to do.
|
| - if (Acquire_Load(&init_once) == ONCE_STATE_UNINITIALIZED) return true;
|
| -
|
| - // TODO(dcarney): Everything below this should be in some sort of mutex...
|
| - Atomic32 living_isolates = Isolate::GetLivingIsolates();
|
| +void V8::TearDown() {
|
| + Isolate* isolate = Isolate::Current();
|
| + ASSERT(isolate->IsDefaultIsolate());
|
| + if (!isolate->IsInitialized()) return;
|
|
|
| - // All isolates have to be torn down before clearing the LOperand
|
| + // The isolate has to be torn down before clearing the LOperand
|
| // caches so that the optimizing compiler thread (if running)
|
| // doesn't see an inconsistent view of the lithium instructions.
|
| - if (living_isolates != 0) return false;
|
| + isolate->TearDown();
|
| + delete isolate;
|
|
|
| ElementsAccessor::TearDown();
|
| LOperand::TearDownCaches();
|
| @@ -108,7 +100,6 @@ bool V8::TearDown() {
|
| call_completed_callbacks_ = NULL;
|
|
|
| Sampler::TearDown();
|
| - return true;
|
| }
|
|
|
|
|
|
|