@@ -840,7 +840,7 @@ size_t SnapshotSerializer::Write(const SnapshotMetadata& data) {
840
840
// [ ... ] env_info
841
841
// [ ... ] code_cache
842
842
843
- void SnapshotData::ToBlob (FILE* out ) const {
843
+ std::vector< char > SnapshotData::ToBlob () const {
844
844
SnapshotSerializer w;
845
845
w.Debug (" SnapshotData::ToBlob()\n " );
846
846
@@ -858,9 +858,14 @@ void SnapshotData::ToBlob(FILE* out) const {
858
858
written_total += w.Write <EnvSerializeInfo>(env_info);
859
859
w.Debug (" Write code_cache\n " );
860
860
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 );
863
861
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 );
864
869
}
865
870
866
871
const SnapshotData* SnapshotData::FromEmbedderWrapper (
@@ -872,20 +877,12 @@ EmbedderSnapshotData::Pointer SnapshotData::AsEmbedderWrapper() const {
872
877
return EmbedderSnapshotData::Pointer{new EmbedderSnapshotData (this , false )};
873
878
}
874
879
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
+ }
887
883
888
- SnapshotDeserializer r (sink);
884
+ bool SnapshotData::FromBlob (SnapshotData* out, const std::vector<char >& in) {
885
+ SnapshotDeserializer r (in);
889
886
r.Debug (" SnapshotData::FromBlob()\n " );
890
887
891
888
DCHECK_EQ (out->data_ownership , SnapshotData::DataOwnership::kOwned );
0 commit comments