| Index: src/isolate.cc
|
| diff --git a/src/isolate.cc b/src/isolate.cc
|
| index 85ae32ac4ebeab0dcdc85cbfd3133798e6d35c67..15a1a9c799fe6438fcfb1bddc4b4b1b2a080a593 100644
|
| --- a/src/isolate.cc
|
| +++ b/src/isolate.cc
|
| @@ -2004,6 +2004,8 @@ bool Isolate::Init(Deserializer* des) {
|
| debug_->SetUp(create_heap_objects);
|
| #endif
|
|
|
| + deoptimizer_data_ = new DeoptimizerData;
|
| +
|
| // If we are deserializing, read the state into the now-empty heap.
|
| if (!create_heap_objects) {
|
| des->Deserialize();
|
| @@ -2022,7 +2024,6 @@ bool Isolate::Init(Deserializer* des) {
|
| // Quiet the heap NaN if needed on target platform.
|
| if (!create_heap_objects) Assembler::QuietNaN(heap_.nan_value());
|
|
|
| - deoptimizer_data_ = new DeoptimizerData;
|
| runtime_profiler_ = new RuntimeProfiler(this);
|
| runtime_profiler_->SetUp();
|
|
|
| @@ -2044,6 +2045,17 @@ bool Isolate::Init(Deserializer* des) {
|
|
|
| state_ = INITIALIZED;
|
| time_millis_at_init_ = OS::TimeCurrentMillis();
|
| +
|
| + if (!create_heap_objects) {
|
| + // Now that the heap is consistent, it's OK to generate the code for the
|
| + // deopt entry table that might have been referred to by optimized code in
|
| + // the snapshot.
|
| + HandleScope scope(this);
|
| + Deoptimizer::EnsureCodeForDeoptimizationEntry(
|
| + Deoptimizer::LAZY,
|
| + kDeoptTableSerializeEntryCount - 1);
|
| + }
|
| +
|
| if (FLAG_parallel_recompilation) optimizing_compiler_thread_.Start();
|
| return true;
|
| }
|
|
|