Chromium Code Reviews| Index: test/cctest/test-serialize.cc |
| diff --git a/test/cctest/test-serialize.cc b/test/cctest/test-serialize.cc |
| index 9a348ad434d8fac5a7b02e20071ae86b2a674585..4b2f17428eb4ea89d49cecfbe2460384dd2fcbf1 100644 |
| --- a/test/cctest/test-serialize.cc |
| +++ b/test/cctest/test-serialize.cc |
| @@ -175,7 +175,7 @@ Vector<const uint8_t> ConstructSource(Vector<const uint8_t> head, |
| // Test that the whole heap can be serialized. |
| UNINITIALIZED_TEST(Serialize) { |
| - if (!Snapshot::HaveASnapshotToStartFrom()) { |
| + if (!Snapshot::HaveASnapshotToStartFrom(CcTest::i_isolate())) { |
| v8::Isolate::CreateParams params; |
| params.enable_serializer = true; |
| v8::Isolate* isolate = v8::Isolate::New(params); |
| @@ -186,7 +186,7 @@ UNINITIALIZED_TEST(Serialize) { |
| // Test that heap serialization is non-destructive. |
| UNINITIALIZED_TEST(SerializeTwice) { |
| - if (!Snapshot::HaveASnapshotToStartFrom()) { |
| + if (!Snapshot::HaveASnapshotToStartFrom(CcTest::i_isolate())) { |
| v8::Isolate::CreateParams params; |
| params.enable_serializer = true; |
| v8::Isolate* isolate = v8::Isolate::New(params); |
| @@ -241,7 +241,7 @@ UNINITIALIZED_DEPENDENT_TEST(Deserialize, Serialize) { |
| // The serialize-deserialize tests only work if the VM is built without |
| // serialization. That doesn't matter. We don't need to be able to |
| // serialize a snapshot in a VM that is booted from a snapshot. |
| - if (!Snapshot::HaveASnapshotToStartFrom()) { |
| + if (!Snapshot::HaveASnapshotToStartFrom(CcTest::i_isolate())) { |
| v8::Isolate* isolate = Deserialize(); |
| { |
| v8::HandleScope handle_scope(isolate); |
| @@ -259,7 +259,7 @@ UNINITIALIZED_DEPENDENT_TEST(Deserialize, Serialize) { |
| UNINITIALIZED_DEPENDENT_TEST(DeserializeFromSecondSerialization, |
| SerializeTwice) { |
| - if (!Snapshot::HaveASnapshotToStartFrom()) { |
| + if (!Snapshot::HaveASnapshotToStartFrom(CcTest::i_isolate())) { |
| v8::Isolate* isolate = Deserialize(); |
| { |
| v8::Isolate::Scope isolate_scope(isolate); |
| @@ -276,7 +276,7 @@ UNINITIALIZED_DEPENDENT_TEST(DeserializeFromSecondSerialization, |
| UNINITIALIZED_DEPENDENT_TEST(DeserializeAndRunScript2, Serialize) { |
| - if (!Snapshot::HaveASnapshotToStartFrom()) { |
| + if (!Snapshot::HaveASnapshotToStartFrom(CcTest::i_isolate())) { |
| v8::Isolate* isolate = Deserialize(); |
| { |
| v8::Isolate::Scope isolate_scope(isolate); |
| @@ -298,7 +298,7 @@ UNINITIALIZED_DEPENDENT_TEST(DeserializeAndRunScript2, Serialize) { |
| UNINITIALIZED_DEPENDENT_TEST(DeserializeFromSecondSerializationAndRunScript2, |
| SerializeTwice) { |
| - if (!Snapshot::HaveASnapshotToStartFrom()) { |
| + if (!Snapshot::HaveASnapshotToStartFrom(CcTest::i_isolate())) { |
| v8::Isolate* isolate = Deserialize(); |
| { |
| v8::Isolate::Scope isolate_scope(isolate); |
| @@ -318,7 +318,7 @@ UNINITIALIZED_DEPENDENT_TEST(DeserializeFromSecondSerializationAndRunScript2, |
| UNINITIALIZED_TEST(PartialSerialization) { |
| - if (!Snapshot::HaveASnapshotToStartFrom()) { |
| + if (!Snapshot::HaveASnapshotToStartFrom(CcTest::i_isolate())) { |
| v8::Isolate::CreateParams params; |
| params.enable_serializer = true; |
| v8::Isolate* v8_isolate = v8::Isolate::New(params); |
| @@ -391,7 +391,7 @@ UNINITIALIZED_TEST(PartialSerialization) { |
| UNINITIALIZED_DEPENDENT_TEST(PartialDeserialization, PartialSerialization) { |
| - if (!Snapshot::HaveASnapshotToStartFrom()) { |
| + if (!Snapshot::HaveASnapshotToStartFrom(CcTest::i_isolate())) { |
| int file_name_length = StrLength(FLAG_testing_serialization_file) + 10; |
| Vector<char> startup_name = Vector<char>::New(file_name_length + 1); |
| SNPrintF(startup_name, "%s.startup", FLAG_testing_serialization_file); |
| @@ -441,7 +441,7 @@ UNINITIALIZED_DEPENDENT_TEST(PartialDeserialization, PartialSerialization) { |
| UNINITIALIZED_TEST(ContextSerialization) { |
| - if (!Snapshot::HaveASnapshotToStartFrom()) { |
| + if (!Snapshot::HaveASnapshotToStartFrom(CcTest::i_isolate())) { |
| v8::Isolate::CreateParams params; |
| params.enable_serializer = true; |
| v8::Isolate* v8_isolate = v8::Isolate::New(params); |
| @@ -508,7 +508,7 @@ UNINITIALIZED_TEST(ContextSerialization) { |
| UNINITIALIZED_DEPENDENT_TEST(ContextDeserialization, ContextSerialization) { |
| - if (!Snapshot::HaveASnapshotToStartFrom()) { |
| + if (!Snapshot::HaveASnapshotToStartFrom(CcTest::i_isolate())) { |
| int file_name_length = StrLength(FLAG_testing_serialization_file) + 10; |
| Vector<char> startup_name = Vector<char>::New(file_name_length + 1); |
| SNPrintF(startup_name, "%s.startup", FLAG_testing_serialization_file); |
| @@ -558,7 +558,7 @@ UNINITIALIZED_DEPENDENT_TEST(ContextDeserialization, ContextSerialization) { |
| UNINITIALIZED_TEST(CustomContextSerialization) { |
| - if (!Snapshot::HaveASnapshotToStartFrom()) { |
| + if (!Snapshot::HaveASnapshotToStartFrom(CcTest::i_isolate())) { |
| v8::Isolate::CreateParams params; |
| params.enable_serializer = true; |
| v8::Isolate* v8_isolate = v8::Isolate::New(params); |
| @@ -646,7 +646,7 @@ UNINITIALIZED_TEST(CustomContextSerialization) { |
| UNINITIALIZED_DEPENDENT_TEST(CustomContextDeserialization, |
| CustomContextSerialization) { |
| FLAG_crankshaft = false; |
| - if (!Snapshot::HaveASnapshotToStartFrom()) { |
| + if (!Snapshot::HaveASnapshotToStartFrom(CcTest::i_isolate())) { |
| int file_name_length = StrLength(FLAG_testing_serialization_file) + 10; |
| Vector<char> startup_name = Vector<char>::New(file_name_length + 1); |
| SNPrintF(startup_name, "%s.startup", FLAG_testing_serialization_file); |
| @@ -704,6 +704,49 @@ UNINITIALIZED_DEPENDENT_TEST(CustomContextDeserialization, |
| } |
| +TEST(PerIsolateSnapshotBlobs) { |
| + // Disable experimental natives that are loaded after desrialization. |
|
vogelheim
2015/02/24 15:16:31
nitpick: desrialization => deserialization
Yang
2015/02/25 08:19:20
Done.
|
| + FLAG_harmony_shipping = false; |
| + FlagList::EnforceFlagImplications(); |
| + |
| + 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::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::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) { |
| } |