| Index: src/isolate.cc
 | 
| diff --git a/src/isolate.cc b/src/isolate.cc
 | 
| index 38a26be1e29a70450d6d08460fbe0e7473b25244..5601a9db370ba723ba468aa2d9623016372933e6 100644
 | 
| --- a/src/isolate.cc
 | 
| +++ b/src/isolate.cc
 | 
| @@ -2030,6 +2030,44 @@ Isolate::ThreadDataTable::~ThreadDataTable() {
 | 
|    // DCHECK_NULL(list_);
 | 
|  }
 | 
|  
 | 
| +void Isolate::ReleaseManagedLifelines() {
 | 
| +  for (Isolate::ManagedLifeline* current = managed_lifelines_root_.next_;
 | 
| +       current != nullptr;) {
 | 
| +    Isolate::ManagedLifeline* next = current->next_;
 | 
| +    current->Dispose();
 | 
| +    delete current;
 | 
| +    current = next;
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +Isolate::ManagedLifeline* Isolate::RegisterForReleaseAtTeardown(
 | 
| +    void* value, Isolate::ManagedLifeline::Deleter deleter) {
 | 
| +  DCHECK_NOT_NULL(value);
 | 
| +  DCHECK_NOT_NULL(deleter);
 | 
| +
 | 
| +  Isolate::ManagedLifeline* ret = new Isolate::ManagedLifeline();
 | 
| +  ret->value_ = value;
 | 
| +  ret->deleter_ = deleter;
 | 
| +  // Insert at head. We keep the head alive for the lifetime of the Isolate
 | 
| +  // because otherwise we can't reset the head, should we delete it before
 | 
| +  // the isolate expires
 | 
| +  Isolate::ManagedLifeline* next = managed_lifelines_root_.next_;
 | 
| +  managed_lifelines_root_.next_ = ret;
 | 
| +  ret->prev_ = &managed_lifelines_root_;
 | 
| +  ret->next_ = next;
 | 
| +  if (next != nullptr) next->prev_ = ret;
 | 
| +  return ret;
 | 
| +}
 | 
| +
 | 
| +void Isolate::UnregisterFromReleaseAtTeardown(
 | 
| +    Isolate::ManagedLifeline*& lifeline) {
 | 
| +  DCHECK_NOT_NULL(lifeline->prev_);
 | 
| +
 | 
| +  lifeline->prev_->next_ = lifeline->next_;
 | 
| +  if (lifeline->next_ != nullptr) lifeline->next_->prev_ = lifeline->prev_;
 | 
| +  delete lifeline;
 | 
| +  lifeline = nullptr;
 | 
| +}
 | 
|  
 | 
|  Isolate::PerIsolateThreadData::~PerIsolateThreadData() {
 | 
|  #if defined(USE_SIMULATOR)
 | 
| @@ -2399,6 +2437,7 @@ void Isolate::Deinit() {
 | 
|    root_index_map_ = NULL;
 | 
|  
 | 
|    ClearSerializerData();
 | 
| +  ReleaseManagedLifelines();
 | 
|  }
 | 
|  
 | 
|  
 | 
| 
 |