diff options
| author | bors <bors@rust-lang.org> | 2022-01-03 20:30:23 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-01-03 20:30:23 +0000 |
| commit | 399ba6bb377ce02224b57c4d6e127e160fa76b34 (patch) | |
| tree | 31d32fd2a048776181dee61085e687980677149d | |
| parent | ddabe0775c5f5b551d5eb54e3c4366fb8bec0c92 (diff) | |
| parent | 6c9ffe4aec905bef7ef77278e736851a660940e1 (diff) | |
| download | rust-399ba6bb377ce02224b57c4d6e127e160fa76b34.tar.gz rust-399ba6bb377ce02224b57c4d6e127e160fa76b34.zip | |
Auto merge of #92314 - Kobzol:encoding-u16-leb128, r=michaelwoerister
Do not use LEB128 for encoding u16 and i16 An experiment to try out the suggestion from https://github.com/rust-lang/rust/issues/68779. Closes: https://github.com/rust-lang/rust/issues/68779
| -rw-r--r-- | compiler/rustc_serialize/src/opaque.rs | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/compiler/rustc_serialize/src/opaque.rs b/compiler/rustc_serialize/src/opaque.rs index cc1216418ae..f2ef1481681 100644 --- a/compiler/rustc_serialize/src/opaque.rs +++ b/compiler/rustc_serialize/src/opaque.rs @@ -92,7 +92,8 @@ impl serialize::Encoder for Encoder { #[inline] fn emit_u16(&mut self, v: u16) -> EncodeResult { - write_leb128!(self, v, u16, write_u16_leb128) + self.data.extend_from_slice(&v.to_le_bytes()); + Ok(()) } #[inline] @@ -123,7 +124,8 @@ impl serialize::Encoder for Encoder { #[inline] fn emit_i16(&mut self, v: i16) -> EncodeResult { - write_leb128!(self, v, i16, write_i16_leb128) + self.data.extend_from_slice(&v.to_le_bytes()); + Ok(()) } #[inline] @@ -446,7 +448,7 @@ impl serialize::Encoder for FileEncoder { #[inline] fn emit_u16(&mut self, v: u16) -> FileEncodeResult { - file_encoder_write_leb128!(self, v, u16, write_u16_leb128) + self.write_all(&v.to_le_bytes()) } #[inline] @@ -476,13 +478,12 @@ impl serialize::Encoder for FileEncoder { #[inline] fn emit_i16(&mut self, v: i16) -> FileEncodeResult { - file_encoder_write_leb128!(self, v, i16, write_i16_leb128) + self.write_all(&v.to_le_bytes()) } #[inline] fn emit_i8(&mut self, v: i8) -> FileEncodeResult { - let as_u8: u8 = unsafe { std::mem::transmute(v) }; - self.emit_u8(as_u8) + self.emit_u8(v as u8) } #[inline] @@ -591,7 +592,10 @@ impl<'a> serialize::Decoder for Decoder<'a> { #[inline] fn read_u16(&mut self) -> Result<u16, Self::Error> { - read_leb128!(self, read_u16_leb128) + let bytes = [self.data[self.position], self.data[self.position + 1]]; + let value = u16::from_le_bytes(bytes); + self.position += 2; + Ok(value) } #[inline] @@ -623,7 +627,10 @@ impl<'a> serialize::Decoder for Decoder<'a> { #[inline] fn read_i16(&mut self) -> Result<i16, Self::Error> { - read_leb128!(self, read_i16_leb128) + let bytes = [self.data[self.position], self.data[self.position + 1]]; + let value = i16::from_le_bytes(bytes); + self.position += 2; + Ok(value) } #[inline] |
