| 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; | 
| } | 
|  | 
|  | 
|  |