@@ -15,8 +15,7 @@ use std::io::{self, Read};
1515use std:: path:: { Path , PathBuf } ;
1616
1717use rustc_data_structures:: memmap:: Mmap ;
18- use rustc_serialize:: opaque:: { FileEncodeResult , FileEncoder } ;
19- use rustc_serialize:: Encoder ;
18+ use rustc_serialize:: { opaque, raw, Encoder } ;
2019use rustc_session:: Session ;
2120
2221/// The first few bytes of files generated by incremental compilation.
@@ -30,7 +29,26 @@ const HEADER_FORMAT_VERSION: u16 = 0;
3029/// the Git commit hash.
3130const RUSTC_VERSION : Option < & str > = option_env ! ( "CFG_VERSION" ) ;
3231
33- pub ( crate ) fn write_file_header ( stream : & mut FileEncoder , nightly_build : bool ) -> FileEncodeResult {
32+ pub ( crate ) fn write_file_header (
33+ stream : & mut opaque:: FileEncoder ,
34+ nightly_build : bool ,
35+ ) -> opaque:: FileEncodeResult {
36+ stream. emit_raw_bytes ( FILE_MAGIC ) ?;
37+ stream. emit_raw_bytes ( & [
38+ ( HEADER_FORMAT_VERSION >> 0 ) as u8 ,
39+ ( HEADER_FORMAT_VERSION >> 8 ) as u8 ,
40+ ] ) ?;
41+
42+ let rustc_version = rustc_version ( nightly_build) ;
43+ assert_eq ! ( rustc_version. len( ) , ( rustc_version. len( ) as u8 ) as usize ) ;
44+ stream. emit_raw_bytes ( & [ rustc_version. len ( ) as u8 ] ) ?;
45+ stream. emit_raw_bytes ( rustc_version. as_bytes ( ) )
46+ }
47+
48+ pub ( crate ) fn write_file_header_raw (
49+ stream : & mut raw:: FileEncoder ,
50+ nightly_build : bool ,
51+ ) -> raw:: FileEncodeResult {
3452 stream. emit_raw_bytes ( FILE_MAGIC ) ?;
3553 stream. emit_raw_bytes ( & [
3654 ( HEADER_FORMAT_VERSION >> 0 ) as u8 ,
@@ -45,7 +63,7 @@ pub(crate) fn write_file_header(stream: &mut FileEncoder, nightly_build: bool) -
4563
4664pub ( crate ) fn save_in < F > ( sess : & Session , path_buf : PathBuf , name : & str , encode : F )
4765where
48- F : FnOnce ( & mut FileEncoder ) -> FileEncodeResult ,
66+ F : FnOnce ( & mut opaque :: FileEncoder ) -> opaque :: FileEncodeResult ,
4967{
5068 debug ! ( "save: storing data in {}" , path_buf. display( ) ) ;
5169
7290 }
7391 }
7492
75- let mut encoder = match FileEncoder :: new ( & path_buf) {
93+ let mut encoder = match opaque :: FileEncoder :: new ( & path_buf) {
7694 Ok ( encoder) => encoder,
7795 Err ( err) => {
7896 sess. err ( & format ! ( "failed to create {} at `{}`: {}" , name, path_buf. display( ) , err) ) ;
0 commit comments