From e647c6a510b54848bb72c22362d46e5aff6eb40b Mon Sep 17 00:00:00 2001 From: ishitatsuyuki Date: Sat, 12 Sep 2020 09:06:52 +0900 Subject: [PATCH] Align rustc_metadata Table to word boundary --- compiler/rustc_metadata/src/rmeta/table.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/compiler/rustc_metadata/src/rmeta/table.rs b/compiler/rustc_metadata/src/rmeta/table.rs index 03bd4170ea990..e74e999832a8d 100644 --- a/compiler/rustc_metadata/src/rmeta/table.rs +++ b/compiler/rustc_metadata/src/rmeta/table.rs @@ -172,8 +172,16 @@ where pub(crate) fn encode(&self, buf: &mut Encoder) -> Lazy> { let pos = buf.position(); + // Since all of the data are serialized as u32, adding some padding + // should make encoding/decoding slightly faster. + let pad = (4 - (pos % 4)) % 4; + let pad_bytes = [0, 0, 0]; + buf.emit_raw_bytes(&pad_bytes[..pad]); buf.emit_raw_bytes(&self.bytes); - Lazy::from_position_and_meta(NonZeroUsize::new(pos as usize).unwrap(), self.bytes.len()) + Lazy::from_position_and_meta( + NonZeroUsize::new(pos as usize + pad).unwrap(), + self.bytes.len(), + ) } }