| Index: test/cctest/test-serialize.cc
|
| diff --git a/test/cctest/test-serialize.cc b/test/cctest/test-serialize.cc
|
| index 0c2622b23c905dab0d74a23476a1af309689971b..45d7499e211a1d671857cd042fe44f0fdc438c63 100644
|
| --- a/test/cctest/test-serialize.cc
|
| +++ b/test/cctest/test-serialize.cc
|
| @@ -1882,6 +1882,71 @@ TEST(CodeSerializerCell) {
|
| }
|
| #endif // V8_TARGET_ARCH_X64
|
|
|
| +TEST(SnapshotCreatorMultipleContexts) {
|
| + DisableTurbofan();
|
| + v8::StartupData blob;
|
| + {
|
| + v8::SnapshotCreator creator;
|
| + v8::Isolate* isolate = creator.GetIsolate();
|
| + {
|
| + v8::HandleScope handle_scope(isolate);
|
| + v8::Local<v8::Context> context = v8::Context::New(isolate);
|
| + v8::Context::Scope context_scope(context);
|
| + CompileRun("var f = function() { return 1; }");
|
| + CHECK_EQ(0, creator.AddContext(context));
|
| + }
|
| + {
|
| + v8::HandleScope handle_scope(isolate);
|
| + v8::Local<v8::Context> context = v8::Context::New(isolate);
|
| + v8::Context::Scope context_scope(context);
|
| + CompileRun("var f = function() { return 2; }");
|
| + CHECK_EQ(1, creator.AddContext(context));
|
| + }
|
| + {
|
| + v8::HandleScope handle_scope(isolate);
|
| + v8::Local<v8::Context> context = v8::Context::New(isolate);
|
| + CHECK_EQ(2, creator.AddContext(context));
|
| + }
|
| + blob =
|
| + creator.CreateBlob(v8::SnapshotCreator::FunctionCodeHandling::kClear);
|
| + }
|
| +
|
| + v8::Isolate::CreateParams params;
|
| + params.snapshot_blob = &blob;
|
| + params.array_buffer_allocator = CcTest::array_buffer_allocator();
|
| + v8::Isolate* isolate = v8::Isolate::New(params);
|
| + {
|
| + v8::Isolate::Scope isolate_scope(isolate);
|
| + v8::ExtensionConfiguration* no_extension = nullptr;
|
| + v8::Local<v8::ObjectTemplate> no_template = v8::Local<v8::ObjectTemplate>();
|
| + v8::Local<v8::Value> no_object = v8::Local<v8::Value>();
|
| + {
|
| + v8::HandleScope handle_scope(isolate);
|
| + v8::Local<v8::Context> context =
|
| + v8::Context::New(isolate, no_extension, no_template, no_object, 0);
|
| + v8::Context::Scope context_scope(context);
|
| + ExpectInt32("f()", 1);
|
| + }
|
| + {
|
| + v8::HandleScope handle_scope(isolate);
|
| + v8::Local<v8::Context> context =
|
| + v8::Context::New(isolate, no_extension, no_template, no_object, 1);
|
| + v8::Context::Scope context_scope(context);
|
| + ExpectInt32("f()", 2);
|
| + }
|
| + {
|
| + v8::HandleScope handle_scope(isolate);
|
| + v8::Local<v8::Context> context =
|
| + v8::Context::New(isolate, no_extension, no_template, no_object, 2);
|
| + v8::Context::Scope context_scope(context);
|
| + ExpectUndefined("this.f");
|
| + }
|
| + }
|
| +
|
| + isolate->Dispose();
|
| + delete[] blob.data;
|
| +}
|
| +
|
| TEST(SerializationMemoryStats) {
|
| FLAG_profile_deserialization = true;
|
| FLAG_always_opt = false;
|
|
|