| Index: test/cctest/test-serialize.cc | 
| diff --git a/test/cctest/test-serialize.cc b/test/cctest/test-serialize.cc | 
| index 115b4e4f0365bfd4ef1dfc6dd81254072208feea..2ecc75b1cb9eb22b1a5c0674799566d8b4239431 100644 | 
| --- a/test/cctest/test-serialize.cc | 
| +++ b/test/cctest/test-serialize.cc | 
| @@ -791,3 +791,56 @@ TEST(SerializeToplevelInternalizedString) { | 
|  | 
| delete cache; | 
| } | 
| + | 
| + | 
| +TEST(SerializeToplevelIsolates) { | 
| +  FLAG_serialize_toplevel = true; | 
| + | 
| +  const char* source = "function f() { return 'abc'; }; f() + 'def'"; | 
| +  v8::ScriptCompiler::CachedData* cache; | 
| + | 
| +  v8::Isolate* isolate = v8::Isolate::New(); | 
| +  { | 
| +    v8::Isolate::Scope iscope(isolate); | 
| +    v8::HandleScope scope(isolate); | 
| +    v8::Local<v8::Context> context = v8::Context::New(isolate); | 
| +    v8::Context::Scope context_scope(context); | 
| + | 
| +    v8::Local<v8::String> source_str = v8_str(source); | 
| +    v8::ScriptOrigin origin(v8_str("test")); | 
| +    v8::ScriptCompiler::Source source(source_str, origin); | 
| +    v8::Local<v8::UnboundScript> script = v8::ScriptCompiler::CompileUnbound( | 
| +        isolate, &source, v8::ScriptCompiler::kProduceCodeCache); | 
| +    const v8::ScriptCompiler::CachedData* data = source.GetCachedData(); | 
| +    // Persist cached data. | 
| +    uint8_t* buffer = NewArray<uint8_t>(data->length); | 
| +    MemCopy(buffer, data->data, data->length); | 
| +    cache = new v8::ScriptCompiler::CachedData( | 
| +        buffer, data->length, v8::ScriptCompiler::CachedData::BufferOwned); | 
| + | 
| +    v8::Local<v8::Value> result = script->BindToCurrentContext()->Run(); | 
| +    CHECK(result->ToString()->Equals(v8_str("abcdef"))); | 
| +  } | 
| +  isolate->Dispose(); | 
| + | 
| +  isolate = v8::Isolate::New(); | 
| +  { | 
| +    v8::Isolate::Scope iscope(isolate); | 
| +    v8::HandleScope scope(isolate); | 
| +    v8::Local<v8::Context> context = v8::Context::New(isolate); | 
| +    v8::Context::Scope context_scope(context); | 
| + | 
| +    v8::Local<v8::String> source_str = v8_str(source); | 
| +    v8::ScriptOrigin origin(v8_str("test")); | 
| +    v8::ScriptCompiler::Source source(source_str, origin, cache); | 
| +    v8::Local<v8::UnboundScript> script; | 
| +    { | 
| +      DisallowCompilation no_compile(reinterpret_cast<Isolate*>(isolate)); | 
| +      script = v8::ScriptCompiler::CompileUnbound( | 
| +          isolate, &source, v8::ScriptCompiler::kConsumeCodeCache); | 
| +    } | 
| +    v8::Local<v8::Value> result = script->BindToCurrentContext()->Run(); | 
| +    CHECK(result->ToString()->Equals(v8_str("abcdef"))); | 
| +  } | 
| +  isolate->Dispose(); | 
| +} | 
|  |