Index: test/cctest/test-serialize.cc |
diff --git a/test/cctest/test-serialize.cc b/test/cctest/test-serialize.cc |
index e73e426c4d00782b99bb414a4a0a345969312738..62c1d8297770b5c8147b203a5c512beea7ed6582 100644 |
--- a/test/cctest/test-serialize.cc |
+++ b/test/cctest/test-serialize.cc |
@@ -114,41 +114,25 @@ TEST(ExternalReferenceDecoder) { |
} |
-class FileByteSink : public SnapshotByteSink { |
- public: |
- explicit FileByteSink(const char* snapshot_file) { |
- fp_ = v8::base::OS::FOpen(snapshot_file, "wb"); |
- file_name_ = snapshot_file; |
- if (fp_ == NULL) { |
- PrintF("Unable to write to snapshot file \"%s\"\n", snapshot_file); |
- exit(1); |
- } |
- } |
- virtual ~FileByteSink() { |
- if (fp_ != NULL) { |
- fclose(fp_); |
- } |
+void WritePayload(const List<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); |
+ exit(1); |
} |
- virtual void Put(byte b, const char* description) { |
- if (fp_ != NULL) { |
- fputc(b, fp_); |
- } |
- } |
- virtual int Position() { |
- return ftell(fp_); |
+ size_t written = fwrite(payload.begin(), 1, payload.length(), file); |
+ if (written != static_cast<size_t>(payload.length())) { |
+ i::PrintF("Writing snapshot file failed.. Aborting.\n"); |
+ exit(1); |
} |
- void WriteSpaceUsed(Serializer* serializer); |
- |
- private: |
- FILE* fp_; |
- const char* file_name_; |
-}; |
+ fclose(file); |
+} |
-void FileByteSink::WriteSpaceUsed(Serializer* ser) { |
- int file_name_length = StrLength(file_name_) + 10; |
+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_); |
+ SNPrintF(name, "%s.size", file_name); |
FILE* fp = v8::base::OS::FOpen(name.start(), "w"); |
name.Dispose(); |
@@ -181,12 +165,13 @@ void FileByteSink::WriteSpaceUsed(Serializer* ser) { |
static bool WriteToFile(Isolate* isolate, const char* snapshot_file) { |
- FileByteSink file(snapshot_file); |
- StartupSerializer ser(isolate, &file); |
+ SnapshotByteSink sink; |
+ StartupSerializer ser(isolate, &sink); |
ser.Serialize(); |
ser.FinalizeAllocation(); |
- file.WriteSpaceUsed(&ser); |
+ WritePayload(sink.data(), snapshot_file); |
+ WriteSpaceUsed(&ser, snapshot_file); |
return true; |
} |
@@ -440,21 +425,26 @@ UNINITIALIZED_TEST(PartialSerialization) { |
} |
env.Reset(); |
- FileByteSink startup_sink(startup_name.start()); |
+ SnapshotByteSink startup_sink; |
StartupSerializer startup_serializer(isolate, &startup_sink); |
startup_serializer.SerializeStrongReferences(); |
- FileByteSink partial_sink(FLAG_testing_serialization_file); |
- PartialSerializer p_ser(isolate, &startup_serializer, &partial_sink); |
- p_ser.Serialize(&raw_foo); |
+ SnapshotByteSink partial_sink; |
+ PartialSerializer partial_serializer(isolate, &startup_serializer, |
+ &partial_sink); |
+ partial_serializer.Serialize(&raw_foo); |
+ |
startup_serializer.SerializeWeakReferences(); |
- p_ser.FinalizeAllocation(); |
+ partial_serializer.FinalizeAllocation(); |
startup_serializer.FinalizeAllocation(); |
- partial_sink.WriteSpaceUsed(&p_ser); |
+ WritePayload(partial_sink.data(), FLAG_testing_serialization_file); |
+ WritePayload(startup_sink.data(), startup_name.start()); |
+ |
+ WriteSpaceUsed(&partial_serializer, FLAG_testing_serialization_file); |
+ WriteSpaceUsed(&startup_serializer, startup_name.start()); |
- startup_sink.WriteSpaceUsed(&startup_serializer); |
startup_name.Dispose(); |
} |
v8_isolate->Exit(); |
@@ -552,21 +542,25 @@ UNINITIALIZED_TEST(ContextSerialization) { |
env.Reset(); |
- FileByteSink startup_sink(startup_name.start()); |
+ SnapshotByteSink startup_sink; |
StartupSerializer startup_serializer(isolate, &startup_sink); |
startup_serializer.SerializeStrongReferences(); |
- FileByteSink partial_sink(FLAG_testing_serialization_file); |
- PartialSerializer p_ser(isolate, &startup_serializer, &partial_sink); |
- p_ser.Serialize(&raw_context); |
+ SnapshotByteSink partial_sink; |
+ PartialSerializer partial_serializer(isolate, &startup_serializer, |
+ &partial_sink); |
+ partial_serializer.Serialize(&raw_context); |
startup_serializer.SerializeWeakReferences(); |
- p_ser.FinalizeAllocation(); |
+ partial_serializer.FinalizeAllocation(); |
startup_serializer.FinalizeAllocation(); |
- partial_sink.WriteSpaceUsed(&p_ser); |
+ WritePayload(partial_sink.data(), FLAG_testing_serialization_file); |
+ WritePayload(startup_sink.data(), startup_name.start()); |
+ |
+ WriteSpaceUsed(&partial_serializer, FLAG_testing_serialization_file); |
+ WriteSpaceUsed(&startup_serializer, startup_name.start()); |
- startup_sink.WriteSpaceUsed(&startup_serializer); |
startup_name.Dispose(); |
} |
v8_isolate->Dispose(); |