@@ -15,8 +15,7 @@ use std::io::{self, Read};
15
15
use std:: path:: { Path , PathBuf } ;
16
16
17
17
use rustc_data_structures:: memmap:: Mmap ;
18
- use rustc_serialize:: opaque:: { FileEncodeResult , FileEncoder } ;
19
- use rustc_serialize:: Encoder ;
18
+ use rustc_serialize:: { opaque, raw, Encoder } ;
20
19
use rustc_session:: Session ;
21
20
22
21
/// The first few bytes of files generated by incremental compilation.
@@ -30,7 +29,26 @@ const HEADER_FORMAT_VERSION: u16 = 0;
30
29
/// the Git commit hash.
31
30
const RUSTC_VERSION : Option < & str > = option_env ! ( "CFG_VERSION" ) ;
32
31
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 {
34
52
stream. emit_raw_bytes ( FILE_MAGIC ) ?;
35
53
stream. emit_raw_bytes ( & [
36
54
( HEADER_FORMAT_VERSION >> 0 ) as u8 ,
@@ -45,7 +63,7 @@ pub(crate) fn write_file_header(stream: &mut FileEncoder, nightly_build: bool) -
45
63
46
64
pub ( crate ) fn save_in < F > ( sess : & Session , path_buf : PathBuf , name : & str , encode : F )
47
65
where
48
- F : FnOnce ( & mut FileEncoder ) -> FileEncodeResult ,
66
+ F : FnOnce ( & mut opaque :: FileEncoder ) -> opaque :: FileEncodeResult ,
49
67
{
50
68
debug ! ( "save: storing data in {}" , path_buf. display( ) ) ;
51
69
72
90
}
73
91
}
74
92
75
- let mut encoder = match FileEncoder :: new ( & path_buf) {
93
+ let mut encoder = match opaque :: FileEncoder :: new ( & path_buf) {
76
94
Ok ( encoder) => encoder,
77
95
Err ( err) => {
78
96
sess. err ( & format ! ( "failed to create {} at `{}`: {}" , name, path_buf. display( ) , err) ) ;
0 commit comments