| Index: src/isolate.cc
|
| ===================================================================
|
| --- src/isolate.cc (revision 9511)
|
| +++ src/isolate.cc (working copy)
|
| @@ -98,6 +98,14 @@
|
| failed_access_check_callback_ = NULL;
|
| save_context_ = NULL;
|
| catcher_ = NULL;
|
| +
|
| + // These members are re-initialized later after deserialization
|
| + // is complete.
|
| + pending_exception_ = NULL;
|
| + has_pending_message_ = false;
|
| + pending_message_obj_ = NULL;
|
| + pending_message_script_ = NULL;
|
| + scheduled_exception_ = NULL;
|
| }
|
|
|
|
|
| @@ -1284,6 +1292,9 @@
|
| memcpy(to, reinterpret_cast<char*>(thread_local_top()),
|
| sizeof(ThreadLocalTop));
|
| InitializeThreadLocal();
|
| + clear_pending_exception();
|
| + clear_pending_message();
|
| + clear_scheduled_exception();
|
| return to + sizeof(ThreadLocalTop);
|
| }
|
|
|
| @@ -1611,9 +1622,6 @@
|
| void Isolate::InitializeThreadLocal() {
|
| thread_local_top_.isolate_ = this;
|
| thread_local_top_.Initialize();
|
| - clear_pending_exception();
|
| - clear_pending_message();
|
| - clear_scheduled_exception();
|
| }
|
|
|
|
|
| @@ -1771,6 +1779,11 @@
|
| stub_cache_->Initialize(true);
|
| }
|
|
|
| + // Finish initialization of ThreadLocal after deserialization is done.
|
| + clear_pending_exception();
|
| + clear_pending_message();
|
| + clear_scheduled_exception();
|
| +
|
| // Deserializing may put strange things in the root array's copy of the
|
| // stack guard.
|
| heap_.SetStackLimits();
|
|
|