diff options
author | Ben Noordhuis <info@bnoordhuis.nl> | 2015-01-07 18:38:38 +0100 |
---|---|---|
committer | Ben Noordhuis <info@bnoordhuis.nl> | 2015-01-07 22:11:18 +0100 |
commit | dad73f645cde6920e79db956e7ef82ed640d7615 (patch) | |
tree | 7ba3f3fc7e0722c5f130065461b7c56f571af383 /deps/v8/test/cctest/test-serialize.cc | |
parent | 53ba494537259b18b346dc6150d6a100c557e08f (diff) | |
download | android-node-v8-dad73f645cde6920e79db956e7ef82ed640d7615.tar.gz android-node-v8-dad73f645cde6920e79db956e7ef82ed640d7615.tar.bz2 android-node-v8-dad73f645cde6920e79db956e7ef82ed640d7615.zip |
deps: upgrade v8 to 3.31.74.1
PR-URL: https://github.com/iojs/io.js/pull/243
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
Diffstat (limited to 'deps/v8/test/cctest/test-serialize.cc')
-rw-r--r-- | deps/v8/test/cctest/test-serialize.cc | 155 |
1 files changed, 36 insertions, 119 deletions
diff --git a/deps/v8/test/cctest/test-serialize.cc b/deps/v8/test/cctest/test-serialize.cc index 6a0e24a24e..acd904f4b7 100644 --- a/deps/v8/test/cctest/test-serialize.cc +++ b/deps/v8/test/cctest/test-serialize.cc @@ -114,7 +114,7 @@ TEST(ExternalReferenceDecoder) { } -void WritePayload(const List<byte>& payload, const char* file_name) { +void WritePayload(const Vector<const byte>& payload, const char* file_name) { FILE* file = v8::base::OS::FOpen(file_name, "wb"); if (file == NULL) { PrintF("Unable to write to snapshot file \"%s\"\n", file_name); @@ -129,50 +129,12 @@ void WritePayload(const List<byte>& payload, const char* file_name) { } -void WriteSpaceUsed(Serializer* ser, const char* file_name) { - int file_name_length = StrLength(file_name) + 10; - Vector<char> name = Vector<char>::New(file_name_length + 1); - SNPrintF(name, "%s.size", file_name); - FILE* fp = v8::base::OS::FOpen(name.start(), "w"); - name.Dispose(); - - Vector<const uint32_t> chunks = ser->FinalAllocationChunks(NEW_SPACE); - CHECK_EQ(1, chunks.length()); - fprintf(fp, "new %d\n", chunks[0]); - chunks = ser->FinalAllocationChunks(OLD_POINTER_SPACE); - CHECK_EQ(1, chunks.length()); - fprintf(fp, "pointer %d\n", chunks[0]); - chunks = ser->FinalAllocationChunks(OLD_DATA_SPACE); - CHECK_EQ(1, chunks.length()); - fprintf(fp, "data %d\n", chunks[0]); - chunks = ser->FinalAllocationChunks(CODE_SPACE); - CHECK_EQ(1, chunks.length()); - fprintf(fp, "code %d\n", chunks[0]); - chunks = ser->FinalAllocationChunks(MAP_SPACE); - CHECK_EQ(1, chunks.length()); - fprintf(fp, "map %d\n", chunks[0]); - chunks = ser->FinalAllocationChunks(CELL_SPACE); - CHECK_EQ(1, chunks.length()); - fprintf(fp, "cell %d\n", chunks[0]); - chunks = ser->FinalAllocationChunks(PROPERTY_CELL_SPACE); - CHECK_EQ(1, chunks.length()); - fprintf(fp, "property cell %d\n", chunks[0]); - chunks = ser->FinalAllocationChunks(LO_SPACE); - CHECK_EQ(1, chunks.length()); - fprintf(fp, "lo %d\n", chunks[0]); - fclose(fp); -} - - static bool WriteToFile(Isolate* isolate, const char* snapshot_file) { SnapshotByteSink sink; StartupSerializer ser(isolate, &sink); ser.Serialize(); - ser.FinalizeAllocation(); - - WritePayload(sink.data(), snapshot_file); - WriteSpaceUsed(&ser, snapshot_file); - + SnapshotData snapshot_data(sink, ser); + WritePayload(snapshot_data.RawData(), snapshot_file); return true; } @@ -220,53 +182,14 @@ UNINITIALIZED_TEST(SerializeTwice) { //---------------------------------------------------------------------------- // Tests that the heap can be deserialized. - -static void ReserveSpaceForSnapshot(Deserializer* deserializer, - const char* file_name) { - int file_name_length = StrLength(file_name) + 10; - Vector<char> name = Vector<char>::New(file_name_length + 1); - SNPrintF(name, "%s.size", file_name); - FILE* fp = v8::base::OS::FOpen(name.start(), "r"); - name.Dispose(); - int new_size, pointer_size, data_size, code_size, map_size, cell_size, - property_cell_size, lo_size; -#if V8_CC_MSVC - // Avoid warning about unsafe fscanf from MSVC. - // Please note that this is only fine if %c and %s are not being used. -#define fscanf fscanf_s -#endif - CHECK_EQ(1, fscanf(fp, "new %d\n", &new_size)); - CHECK_EQ(1, fscanf(fp, "pointer %d\n", &pointer_size)); - CHECK_EQ(1, fscanf(fp, "data %d\n", &data_size)); - CHECK_EQ(1, fscanf(fp, "code %d\n", &code_size)); - CHECK_EQ(1, fscanf(fp, "map %d\n", &map_size)); - CHECK_EQ(1, fscanf(fp, "cell %d\n", &cell_size)); - CHECK_EQ(1, fscanf(fp, "property cell %d\n", &property_cell_size)); - CHECK_EQ(1, fscanf(fp, "lo %d\n", &lo_size)); -#if V8_CC_MSVC -#undef fscanf -#endif - fclose(fp); - deserializer->AddReservation(NEW_SPACE, new_size); - deserializer->AddReservation(OLD_POINTER_SPACE, pointer_size); - deserializer->AddReservation(OLD_DATA_SPACE, data_size); - deserializer->AddReservation(CODE_SPACE, code_size); - deserializer->AddReservation(MAP_SPACE, map_size); - deserializer->AddReservation(CELL_SPACE, cell_size); - deserializer->AddReservation(PROPERTY_CELL_SPACE, property_cell_size); - deserializer->AddReservation(LO_SPACE, lo_size); -} - - v8::Isolate* InitializeFromFile(const char* snapshot_file) { int len; byte* str = ReadBytes(snapshot_file, &len); if (!str) return NULL; v8::Isolate* v8_isolate = NULL; { - SnapshotByteSource source(str, len); - Deserializer deserializer(&source); - ReserveSpaceForSnapshot(&deserializer, snapshot_file); + SnapshotData snapshot_data(Vector<const byte>(str, len)); + Deserializer deserializer(&snapshot_data); Isolate* isolate = Isolate::NewForTesting(); v8_isolate = reinterpret_cast<v8::Isolate*>(isolate); v8::Isolate::Scope isolate_scope(v8_isolate); @@ -436,14 +359,11 @@ UNINITIALIZED_TEST(PartialSerialization) { startup_serializer.SerializeWeakReferences(); - partial_serializer.FinalizeAllocation(); - startup_serializer.FinalizeAllocation(); - - WritePayload(partial_sink.data(), FLAG_testing_serialization_file); - WritePayload(startup_sink.data(), startup_name.start()); + SnapshotData startup_snapshot(startup_sink, startup_serializer); + SnapshotData partial_snapshot(partial_sink, partial_serializer); - WriteSpaceUsed(&partial_serializer, FLAG_testing_serialization_file); - WriteSpaceUsed(&startup_serializer, startup_name.start()); + WritePayload(partial_snapshot.RawData(), FLAG_testing_serialization_file); + WritePayload(startup_snapshot.RawData(), startup_name.start()); startup_name.Dispose(); } @@ -473,9 +393,8 @@ UNINITIALIZED_DEPENDENT_TEST(PartialDeserialization, PartialSerialization) { Isolate* isolate = reinterpret_cast<Isolate*>(v8_isolate); Object* root; { - SnapshotByteSource source(snapshot, snapshot_size); - Deserializer deserializer(&source); - ReserveSpaceForSnapshot(&deserializer, file_name); + SnapshotData snapshot_data(Vector<const byte>(snapshot, snapshot_size)); + Deserializer deserializer(&snapshot_data); deserializer.DeserializePartial(isolate, &root); CHECK(root->IsString()); } @@ -485,9 +404,8 @@ UNINITIALIZED_DEPENDENT_TEST(PartialDeserialization, PartialSerialization) { Object* root2; { - SnapshotByteSource source(snapshot, snapshot_size); - Deserializer deserializer(&source); - ReserveSpaceForSnapshot(&deserializer, file_name); + SnapshotData snapshot_data(Vector<const byte>(snapshot, snapshot_size)); + Deserializer deserializer(&snapshot_data); deserializer.DeserializePartial(isolate, &root2); CHECK(root2->IsString()); CHECK(*root_handle == root2); @@ -552,14 +470,11 @@ UNINITIALIZED_TEST(ContextSerialization) { partial_serializer.Serialize(&raw_context); startup_serializer.SerializeWeakReferences(); - partial_serializer.FinalizeAllocation(); - startup_serializer.FinalizeAllocation(); - - WritePayload(partial_sink.data(), FLAG_testing_serialization_file); - WritePayload(startup_sink.data(), startup_name.start()); + SnapshotData startup_snapshot(startup_sink, startup_serializer); + SnapshotData partial_snapshot(partial_sink, partial_serializer); - WriteSpaceUsed(&partial_serializer, FLAG_testing_serialization_file); - WriteSpaceUsed(&startup_serializer, startup_name.start()); + WritePayload(partial_snapshot.RawData(), FLAG_testing_serialization_file); + WritePayload(startup_snapshot.RawData(), startup_name.start()); startup_name.Dispose(); } @@ -588,9 +503,8 @@ UNINITIALIZED_DEPENDENT_TEST(ContextDeserialization, ContextSerialization) { Isolate* isolate = reinterpret_cast<Isolate*>(v8_isolate); Object* root; { - SnapshotByteSource source(snapshot, snapshot_size); - Deserializer deserializer(&source); - ReserveSpaceForSnapshot(&deserializer, file_name); + SnapshotData snapshot_data(Vector<const byte>(snapshot, snapshot_size)); + Deserializer deserializer(&snapshot_data); deserializer.DeserializePartial(isolate, &root); CHECK(root->IsContext()); } @@ -600,9 +514,8 @@ UNINITIALIZED_DEPENDENT_TEST(ContextDeserialization, ContextSerialization) { Object* root2; { - SnapshotByteSource source(snapshot, snapshot_size); - Deserializer deserializer(&source); - ReserveSpaceForSnapshot(&deserializer, file_name); + SnapshotData snapshot_data(Vector<const byte>(snapshot, snapshot_size)); + Deserializer deserializer(&snapshot_data); deserializer.DeserializePartial(isolate, &root2); CHECK(root2->IsContext()); CHECK(*root_handle != root2); @@ -946,12 +859,15 @@ TEST(SerializeToplevelThreeBigStrings) { CHECK_EQ(600000 + 700000, CompileRun("(a + b).length")->Int32Value()); CHECK_EQ(500000 + 600000, CompileRun("(b + c).length")->Int32Value()); Heap* heap = isolate->heap(); - CHECK(heap->InSpace(*v8::Utils::OpenHandle(*CompileRun("a")->ToString()), - OLD_DATA_SPACE)); - CHECK(heap->InSpace(*v8::Utils::OpenHandle(*CompileRun("b")->ToString()), - OLD_DATA_SPACE)); - CHECK(heap->InSpace(*v8::Utils::OpenHandle(*CompileRun("c")->ToString()), - OLD_DATA_SPACE)); + CHECK(heap->InSpace( + *v8::Utils::OpenHandle(*CompileRun("a")->ToString(CcTest::isolate())), + OLD_DATA_SPACE)); + CHECK(heap->InSpace( + *v8::Utils::OpenHandle(*CompileRun("b")->ToString(CcTest::isolate())), + OLD_DATA_SPACE)); + CHECK(heap->InSpace( + *v8::Utils::OpenHandle(*CompileRun("c")->ToString(CcTest::isolate())), + OLD_DATA_SPACE)); delete cache; source_a.Dispose(); @@ -1208,7 +1124,7 @@ TEST(SerializeToplevelIsolates) { buffer, data->length, v8::ScriptCompiler::CachedData::BufferOwned); v8::Local<v8::Value> result = script->BindToCurrentContext()->Run(); - CHECK(result->ToString()->Equals(v8_str("abcdef"))); + CHECK(result->ToString(isolate1)->Equals(v8_str("abcdef"))); } isolate1->Dispose(); @@ -1231,15 +1147,16 @@ TEST(SerializeToplevelIsolates) { script = v8::ScriptCompiler::CompileUnbound( isolate2, &source, v8::ScriptCompiler::kConsumeCodeCache); } + CHECK(!cache->rejected); v8::Local<v8::Value> result = script->BindToCurrentContext()->Run(); - CHECK(result->ToString()->Equals(v8_str("abcdef"))); + CHECK(result->ToString(isolate2)->Equals(v8_str("abcdef"))); } DCHECK(toplevel_test_code_event_found); isolate2->Dispose(); } -TEST(Bug3628) { +TEST(SerializeWithHarmonyScoping) { FLAG_serialize_toplevel = true; FLAG_harmony_scoping = true; @@ -1273,7 +1190,7 @@ TEST(Bug3628) { buffer, data->length, v8::ScriptCompiler::CachedData::BufferOwned); v8::Local<v8::Value> result = script->BindToCurrentContext()->Run(); - CHECK(result->ToString()->Equals(v8_str("XY"))); + CHECK(result->ToString(isolate1)->Equals(v8_str("XY"))); } isolate1->Dispose(); @@ -1298,7 +1215,7 @@ TEST(Bug3628) { isolate2, &source, v8::ScriptCompiler::kConsumeCodeCache); } v8::Local<v8::Value> result = script->BindToCurrentContext()->Run(); - CHECK(result->ToString()->Equals(v8_str("XY"))); + CHECK(result->ToString(isolate2)->Equals(v8_str("XY"))); } isolate2->Dispose(); } |