about summary refs log tree commit diff
path: root/compiler
diff options
context:
space:
mode:
authorMaybe Waffle <waffle.lapkin@gmail.com>2022-11-29 11:52:48 +0000
committerMaybe Waffle <waffle.lapkin@gmail.com>2022-11-29 11:52:48 +0000
commit050cee48f83b39a0f532e4905d02f07716bf2ee3 (patch)
tree13de5ebed7ee03d48f416fd659f29b0c1c5d67b7 /compiler
parent1ef685ea39280cc4a4a32f7c3c586d2ce946e8f0 (diff)
downloadrust-050cee48f83b39a0f532e4905d02f07716bf2ee3.tar.gz
rust-050cee48f83b39a0f532e4905d02f07716bf2ee3.zip
Replace a macro with a function
Diffstat (limited to 'compiler')
-rw-r--r--compiler/rustc_serialize/src/leb128.rs19
-rw-r--r--compiler/rustc_serialize/src/opaque.rs10
2 files changed, 13 insertions, 16 deletions
diff --git a/compiler/rustc_serialize/src/leb128.rs b/compiler/rustc_serialize/src/leb128.rs
index a6cdd32f23b..c5297bff193 100644
--- a/compiler/rustc_serialize/src/leb128.rs
+++ b/compiler/rustc_serialize/src/leb128.rs
@@ -1,22 +1,19 @@
-#![macro_use]
-
-macro_rules! max_leb128_len {
-    ($int_ty:ty) => {
-        // The longest LEB128 encoding for an integer uses 7 bits per byte.
-        (std::mem::size_of::<$int_ty>() * 8 + 6) / 7
-    };
+/// Returns the longest LEB128 encoding for `T`, assuming `T` is an integer type
+pub const fn max_leb128_len<T>() -> usize {
+    // The longest LEB128 encoding for an integer uses 7 bits per byte.
+    (std::mem::size_of::<T>() * 8 + 6) / 7
 }
 
 /// Returns the longest LEB128 encoding of all supported integer types.
-pub const fn max_leb128_len() -> usize {
-    max_leb128_len!(u128)
+pub const fn max_max_leb128_len() -> usize {
+    max_leb128_len::<u128>()
 }
 
 macro_rules! impl_write_unsigned_leb128 {
     ($fn_name:ident, $int_ty:ty) => {
         #[inline]
         pub fn $fn_name(
-            out: &mut [::std::mem::MaybeUninit<u8>; max_leb128_len!($int_ty)],
+            out: &mut [::std::mem::MaybeUninit<u8>; max_leb128_len::<$int_ty>()],
             mut value: $int_ty,
         ) -> &[u8] {
             let mut i = 0;
@@ -90,7 +87,7 @@ macro_rules! impl_write_signed_leb128 {
     ($fn_name:ident, $int_ty:ty) => {
         #[inline]
         pub fn $fn_name(
-            out: &mut [::std::mem::MaybeUninit<u8>; max_leb128_len!($int_ty)],
+            out: &mut [::std::mem::MaybeUninit<u8>; max_leb128_len::<$int_ty>()],
             mut value: $int_ty,
         ) -> &[u8] {
             let mut i = 0;
diff --git a/compiler/rustc_serialize/src/opaque.rs b/compiler/rustc_serialize/src/opaque.rs
index 7c54df809f1..7cd513e1eb9 100644
--- a/compiler/rustc_serialize/src/opaque.rs
+++ b/compiler/rustc_serialize/src/opaque.rs
@@ -1,4 +1,4 @@
-use crate::leb128::{self, max_leb128_len};
+use crate::leb128::{self, max_max_leb128_len};
 use crate::serialize::{Decodable, Decoder, Encodable, Encoder};
 use std::convert::TryInto;
 use std::fs::File;
@@ -32,7 +32,7 @@ impl MemEncoder {
 
 macro_rules! write_leb128 {
     ($enc:expr, $value:expr, $int_ty:ty, $fun:ident) => {{
-        const MAX_ENCODED_LEN: usize = max_leb128_len!($int_ty);
+        const MAX_ENCODED_LEN: usize = $crate::leb128::max_leb128_len::<$int_ty>();
         let old_len = $enc.data.len();
 
         if MAX_ENCODED_LEN > $enc.data.capacity() - old_len {
@@ -186,12 +186,12 @@ impl FileEncoder {
     pub fn with_capacity<P: AsRef<Path>>(path: P, capacity: usize) -> io::Result<Self> {
         // Require capacity at least as large as the largest LEB128 encoding
         // here, so that we don't have to check or handle this on every write.
-        assert!(capacity >= max_leb128_len());
+        assert!(capacity >= max_max_leb128_len());
 
         // Require capacity small enough such that some capacity checks can be
         // done using guaranteed non-overflowing add rather than sub, which
         // shaves an instruction off those code paths (on x86 at least).
-        assert!(capacity <= usize::MAX - max_leb128_len());
+        assert!(capacity <= usize::MAX - max_max_leb128_len());
 
         // Create the file for reading and writing, because some encoders do both
         // (e.g. the metadata encoder when -Zmeta-stats is enabled)
@@ -411,7 +411,7 @@ impl Drop for FileEncoder {
 
 macro_rules! file_encoder_write_leb128 {
     ($enc:expr, $value:expr, $int_ty:ty, $fun:ident) => {{
-        const MAX_ENCODED_LEN: usize = max_leb128_len!($int_ty);
+        const MAX_ENCODED_LEN: usize = $crate::leb128::max_leb128_len::<$int_ty>();
 
         // We ensure this during `FileEncoder` construction.
         debug_assert!($enc.capacity() >= MAX_ENCODED_LEN);