@@ -840,7 +840,7 @@ size_t SnapshotSerializer::Write(const SnapshotMetadata& data) {
840840// [ ... ] env_info
841841// [ ... ] code_cache
842842
843- void SnapshotData::ToBlob (FILE* out ) const {
843+ std::vector< char > SnapshotData::ToBlob () const {
844844 SnapshotSerializer w;
845845 w.Debug (" SnapshotData::ToBlob()\n " );
846846
@@ -858,9 +858,14 @@ void SnapshotData::ToBlob(FILE* out) const {
858858 written_total += w.Write <EnvSerializeInfo>(env_info);
859859 w.Debug (" Write code_cache\n " );
860860 written_total += w.WriteVector <builtins::CodeCacheInfo>(code_cache);
861- size_t num_written = fwrite (w.sink .data (), w.sink .size (), 1 , out);
862- CHECK_EQ (num_written, 1 );
863861 w.Debug (" SnapshotData::ToBlob() Wrote %d bytes\n " , written_total);
862+ return w.sink ;
863+ }
864+
865+ void SnapshotData::ToFile (FILE* out) const {
866+ const std::vector<char > sink = ToBlob ();
867+ size_t num_written = fwrite (sink.data (), sink.size (), 1 , out);
868+ CHECK_EQ (num_written, 1 );
864869}
865870
866871const SnapshotData* SnapshotData::FromEmbedderWrapper (
@@ -872,20 +877,12 @@ EmbedderSnapshotData::Pointer SnapshotData::AsEmbedderWrapper() const {
872877 return EmbedderSnapshotData::Pointer{new EmbedderSnapshotData (this , false )};
873878}
874879
875- bool SnapshotData::FromBlob (SnapshotData* out, FILE* in) {
876- CHECK_EQ (ftell (in), 0 );
877- int err = fseek (in, 0 , SEEK_END);
878- CHECK_EQ (err, 0 );
879- size_t size = ftell (in);
880- CHECK_NE (size, static_cast <size_t >(-1L ));
881- err = fseek (in, 0 , SEEK_SET);
882- CHECK_EQ (err, 0 );
883-
884- std::vector<char > sink (size);
885- size_t num_read = fread (sink.data (), size, 1 , in);
886- CHECK_EQ (num_read, 1 );
880+ bool SnapshotData::FromFile (SnapshotData* out, FILE* in) {
881+ return FromBlob (out, ReadFileSync (in));
882+ }
887883
888- SnapshotDeserializer r (sink);
884+ bool SnapshotData::FromBlob (SnapshotData* out, const std::vector<char >& in) {
885+ SnapshotDeserializer r (in);
889886 r.Debug (" SnapshotData::FromBlob()\n " );
890887
891888 DCHECK_EQ (out->data_ownership , SnapshotData::DataOwnership::kOwned );
0 commit comments