about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNick Fitzgerald <fitzgen@gmail.com>2019-02-07 15:44:52 +0100
committerNick Fitzgerald <fitzgen@gmail.com>2019-02-08 10:07:08 +0100
commitc104b5c89767101a40ef173eb84d3aa1122e5e9a (patch)
tree05bf089cbe0a3595610739e7eb943d0e1add1485
parente633f152397545c2fd80795fc928ec555656b2ab (diff)
downloadrust-c104b5c89767101a40ef173eb84d3aa1122e5e9a.tar.gz
rust-c104b5c89767101a40ef173eb84d3aa1122e5e9a.zip
Also de-duplicate 32- and 64-bit number formatting on wasm32
-rw-r--r--src/libcore/fmt/num.rs26
1 files changed, 18 insertions, 8 deletions
diff --git a/src/libcore/fmt/num.rs b/src/libcore/fmt/num.rs
index 31886748fa6..b9fa3640371 100644
--- a/src/libcore/fmt/num.rs
+++ b/src/libcore/fmt/num.rs
@@ -257,12 +257,22 @@ macro_rules! impl_Display {
     };
 }
 
-impl_Display!(i8, u8, i16, u16, i32, u32 as u32 via to_u32 named fmt_u32);
-impl_Display!(i64, u64 as u64 via to_u64 named fmt_u64);
+// Include wasm32 in here since it doesn't reflect the native pointer size, and
+// often cares strongly about getting a smaller code size.
+#[cfg(any(target_pointer_width = "64", target_arch = "wasm32"))]
+mod imp {
+    use super::*;
+    impl_Display!(
+        i8, u8, i16, u16, i32, u32, i64, u64, usize, isize
+            as u64 via to_u64 named fmt_u64
+    );
+}
+
+#[cfg(not(any(target_pointer_width = "64", target_arch = "wasm32")))]
+mod imp {
+    use super::*;
+    impl_Display!(i8, u8, i16, u16, i32, u32, isize, usize as u32 via to_u32 named fmt_u32);
+    impl_Display!(i64, u64 as u64 via to_u64 named fmt_u64);
+}
+
 impl_Display!(i128, u128 as u128 via to_u128 named fmt_u128);
-#[cfg(target_pointer_width = "16")]
-impl_Display!(isize, usize as u16 via to_u16 named fmt_usize);
-#[cfg(target_pointer_width = "32")]
-impl_Display!(isize, usize as u32 via to_u32 named fmt_usize);
-#[cfg(target_pointer_width = "64")]
-impl_Display!(isize, usize as u64 via to_u64 named fmt_usize);