| Index: test/cctest/test-serialize.cc
|
| diff --git a/test/cctest/test-serialize.cc b/test/cctest/test-serialize.cc
|
| index 592a9ff1192c35ff0d6cc186619b6e9868e7fc06..4266139fddad1adf3f7f41ff521294de2890b873 100644
|
| --- a/test/cctest/test-serialize.cc
|
| +++ b/test/cctest/test-serialize.cc
|
| @@ -748,6 +748,62 @@ TEST(PerIsolateSnapshotBlobs) {
|
| }
|
|
|
|
|
| +TEST(PerIsolateSnapshotBlobsWithLocker) {
|
| + // Disable experimental natives that are loaded after deserialization.
|
| + FLAG_harmony_shipping = false;
|
| + FlagList::EnforceFlagImplications();
|
| +
|
| + v8::Isolate* isolate0 = v8::Isolate::New();
|
| + {
|
| + v8::Locker locker(isolate0);
|
| + v8::Isolate::Scope i_scope(isolate0);
|
| + v8::HandleScope h_scope(isolate0);
|
| + v8::Local<v8::Context> context = v8::Context::New(isolate0);
|
| + v8::Context::Scope c_scope(context);
|
| + CHECK_EQ(1, CompileRun("Math.cos(0)")->ToInt32(isolate0)->Int32Value());
|
| + }
|
| + isolate0->Dispose();
|
| +
|
| + const char* source1 = "function f() { return 42; }";
|
| + const char* source2 =
|
| + "function f() { return g() * 2; }"
|
| + "function g() { return 43; }";
|
| +
|
| + v8::StartupData data1 = v8::V8::CreateSnapshotDataBlob(source1);
|
| + v8::StartupData data2 = v8::V8::CreateSnapshotDataBlob(source2);
|
| +
|
| + v8::Isolate::CreateParams params1;
|
| + params1.snapshot_blob = &data1;
|
| + v8::Isolate* isolate1 = v8::Isolate::New(params1);
|
| + {
|
| + v8::Locker locker(isolate1);
|
| + v8::Isolate::Scope i_scope(isolate1);
|
| + v8::HandleScope h_scope(isolate1);
|
| + v8::Local<v8::Context> context = v8::Context::New(isolate1);
|
| + delete[] data1.data; // We can dispose of the snapshot blob now.
|
| + v8::Context::Scope c_scope(context);
|
| + CHECK_EQ(42, CompileRun("f()")->ToInt32(isolate1)->Int32Value());
|
| + CHECK(CompileRun("this.g")->IsUndefined());
|
| + }
|
| + isolate1->Dispose();
|
| +
|
| + v8::Isolate::CreateParams params2;
|
| + params2.snapshot_blob = &data2;
|
| + v8::Isolate* isolate2 = v8::Isolate::New(params2);
|
| + {
|
| + v8::Locker locker(isolate2);
|
| + v8::Isolate::Scope i_scope(isolate2);
|
| + v8::HandleScope h_scope(isolate2);
|
| + v8::Local<v8::Context> context = v8::Context::New(isolate2);
|
| + delete[] data2.data; // We can dispose of the snapshot blob now.
|
| + v8::Context::Scope c_scope(context);
|
| + CHECK_EQ(86, CompileRun("f()")->ToInt32(isolate2)->Int32Value());
|
| + CHECK_EQ(43, CompileRun("g()")->ToInt32(isolate2)->Int32Value());
|
| + }
|
| + isolate2->Dispose();
|
| +}
|
| +
|
| +
|
| TEST(TestThatAlwaysSucceeds) {
|
| }
|
|
|
|
|