| Index: test/cctest/test-serialize.cc
 | 
| diff --git a/test/cctest/test-serialize.cc b/test/cctest/test-serialize.cc
 | 
| index 6b609757a9f3753782a265bc206983d5c92df05b..8713f5d15456ce5ffa47d6d1f5bcdd4e2e3f2e33 100644
 | 
| --- a/test/cctest/test-serialize.cc
 | 
| +++ b/test/cctest/test-serialize.cc
 | 
| @@ -329,7 +329,7 @@ UNINITIALIZED_TEST(PartialSerialization) {
 | 
|                                           &partial_sink);
 | 
|      partial_serializer.Serialize(&raw_foo);
 | 
|  
 | 
| -    startup_serializer.SerializeWeakReferences();
 | 
| +    startup_serializer.SerializeWeakReferencesAndDeferred();
 | 
|  
 | 
|      SnapshotData startup_snapshot(startup_serializer);
 | 
|      SnapshotData partial_snapshot(partial_serializer);
 | 
| @@ -447,7 +447,7 @@ UNINITIALIZED_TEST(ContextSerialization) {
 | 
|      PartialSerializer partial_serializer(isolate, &startup_serializer,
 | 
|                                           &partial_sink);
 | 
|      partial_serializer.Serialize(&raw_context);
 | 
| -    startup_serializer.SerializeWeakReferences();
 | 
| +    startup_serializer.SerializeWeakReferencesAndDeferred();
 | 
|  
 | 
|      SnapshotData startup_snapshot(startup_serializer);
 | 
|      SnapshotData partial_snapshot(partial_serializer);
 | 
| @@ -582,7 +582,7 @@ UNINITIALIZED_TEST(CustomContextSerialization) {
 | 
|      PartialSerializer partial_serializer(isolate, &startup_serializer,
 | 
|                                           &partial_sink);
 | 
|      partial_serializer.Serialize(&raw_context);
 | 
| -    startup_serializer.SerializeWeakReferences();
 | 
| +    startup_serializer.SerializeWeakReferencesAndDeferred();
 | 
|  
 | 
|      SnapshotData startup_snapshot(startup_serializer);
 | 
|      SnapshotData partial_snapshot(partial_serializer);
 | 
| @@ -738,6 +738,44 @@ TEST(PerIsolateSnapshotBlobsWithLocker) {
 | 
|  }
 | 
|  
 | 
|  
 | 
| +TEST(SnapshotBlobsStackOverflow) {
 | 
| +  DisableTurbofan();
 | 
| +  const char* source =
 | 
| +      "var a = [0];"
 | 
| +      "var b = a;"
 | 
| +      "for (var i = 0; i < 10000; i++) {"
 | 
| +      "  var c = [i];"
 | 
| +      "  b.push(c);"
 | 
| +      "  b.push(c);"
 | 
| +      "  b = c;"
 | 
| +      "}";
 | 
| +
 | 
| +  v8::StartupData data = v8::V8::CreateSnapshotDataBlob(source);
 | 
| +
 | 
| +  v8::Isolate::CreateParams params;
 | 
| +  params.snapshot_blob = &data;
 | 
| +  params.array_buffer_allocator = CcTest::array_buffer_allocator();
 | 
| +
 | 
| +  v8::Isolate* isolate = v8::Isolate::New(params);
 | 
| +  {
 | 
| +    v8::Isolate::Scope i_scope(isolate);
 | 
| +    v8::HandleScope h_scope(isolate);
 | 
| +    v8::Local<v8::Context> context = v8::Context::New(isolate);
 | 
| +    delete[] data.data;  // We can dispose of the snapshot blob now.
 | 
| +    v8::Context::Scope c_scope(context);
 | 
| +    const char* test =
 | 
| +        "var sum = 0;"
 | 
| +        "while (a) {"
 | 
| +        "  sum += a[0];"
 | 
| +        "  a = a[1];"
 | 
| +        "}"
 | 
| +        "sum";
 | 
| +    CHECK_EQ(9999 * 5000, CompileRun(test)->ToInt32(isolate)->Int32Value());
 | 
| +  }
 | 
| +  isolate->Dispose();
 | 
| +}
 | 
| +
 | 
| +
 | 
|  TEST(TestThatAlwaysSucceeds) {
 | 
|  }
 | 
|  
 | 
| 
 |