about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2020-02-20 02:00:31 +0000
committerbors <bors@rust-lang.org>2020-02-20 02:00:31 +0000
commit183e893aaae581bd0ab499ba56b6c5e118557dc7 (patch)
tree02a99563f74f9a881cbb02303c8bdda9902674a6
parentd5638142b32935508626226d0f0cf9059db40789 (diff)
parente761f3af904b3c275bdebc73bb29ffc45384945d (diff)
downloadrust-183e893aaae581bd0ab499ba56b6c5e118557dc7.tar.gz
rust-183e893aaae581bd0ab499ba56b6c5e118557dc7.zip
Auto merge of #69256 - nnethercote:misc-inlining, r=Centril
Miscellaneous inlining improvements

These commits inline some hot functions that aren't currently inlined, for some speed wins.

r? @Centril
-rw-r--r--src/libcore/str/mod.rs2
-rw-r--r--src/librustc_span/symbol.rs2
-rw-r--r--src/libserialize/serialize.rs19
3 files changed, 22 insertions, 1 deletions
diff --git a/src/libcore/str/mod.rs b/src/libcore/str/mod.rs
index e5b8412e117..7c4acb0edb7 100644
--- a/src/libcore/str/mod.rs
+++ b/src/libcore/str/mod.rs
@@ -1499,7 +1499,7 @@ fn contains_nonascii(x: usize) -> bool {
 
 /// Walks through `v` checking that it's a valid UTF-8 sequence,
 /// returning `Ok(())` in that case, or, if it is invalid, `Err(err)`.
-#[inline]
+#[inline(always)]
 fn run_utf8_validation(v: &[u8]) -> Result<(), Utf8Error> {
     let mut index = 0;
     let len = v.len();
diff --git a/src/librustc_span/symbol.rs b/src/librustc_span/symbol.rs
index 3c419334d42..97708d91d7e 100644
--- a/src/librustc_span/symbol.rs
+++ b/src/librustc_span/symbol.rs
@@ -993,6 +993,7 @@ impl Encodable for Symbol {
 }
 
 impl Decodable for Symbol {
+    #[inline]
     fn decode<D: Decoder>(d: &mut D) -> Result<Symbol, D::Error> {
         Ok(Symbol::intern(&d.read_str()?))
     }
@@ -1031,6 +1032,7 @@ impl Interner {
         }
     }
 
+    #[inline]
     pub fn intern(&mut self, string: &str) -> Symbol {
         if let Some(&name) = self.names.get(string) {
             return name;
diff --git a/src/libserialize/serialize.rs b/src/libserialize/serialize.rs
index 19283ffc438..8c6548cd3c5 100644
--- a/src/libserialize/serialize.rs
+++ b/src/libserialize/serialize.rs
@@ -36,6 +36,7 @@ pub trait Encoder {
     fn emit_str(&mut self, v: &str) -> Result<(), Self::Error>;
 
     // Compound types:
+    #[inline]
     fn emit_enum<F>(&mut self, _name: &str, f: F) -> Result<(), Self::Error>
     where
         F: FnOnce(&mut Self) -> Result<(), Self::Error>,
@@ -57,6 +58,7 @@ pub trait Encoder {
         f(self)
     }
 
+    #[inline]
     fn emit_enum_variant_arg<F>(&mut self, _a_idx: usize, f: F) -> Result<(), Self::Error>
     where
         F: FnOnce(&mut Self) -> Result<(), Self::Error>,
@@ -89,6 +91,7 @@ pub trait Encoder {
         self.emit_enum_variant_arg(f_idx, f)
     }
 
+    #[inline]
     fn emit_struct<F>(&mut self, _name: &str, _len: usize, f: F) -> Result<(), Self::Error>
     where
         F: FnOnce(&mut Self) -> Result<(), Self::Error>,
@@ -96,6 +99,7 @@ pub trait Encoder {
         f(self)
     }
 
+    #[inline]
     fn emit_struct_field<F>(
         &mut self,
         _f_name: &str,
@@ -108,6 +112,7 @@ pub trait Encoder {
         f(self)
     }
 
+    #[inline]
     fn emit_tuple<F>(&mut self, _len: usize, f: F) -> Result<(), Self::Error>
     where
         F: FnOnce(&mut Self) -> Result<(), Self::Error>,
@@ -115,6 +120,7 @@ pub trait Encoder {
         f(self)
     }
 
+    #[inline]
     fn emit_tuple_arg<F>(&mut self, _idx: usize, f: F) -> Result<(), Self::Error>
     where
         F: FnOnce(&mut Self) -> Result<(), Self::Error>,
@@ -164,6 +170,7 @@ pub trait Encoder {
         f(self)
     }
 
+    #[inline]
     fn emit_seq_elt<F>(&mut self, _idx: usize, f: F) -> Result<(), Self::Error>
     where
         F: FnOnce(&mut Self) -> Result<(), Self::Error>,
@@ -179,6 +186,7 @@ pub trait Encoder {
         f(self)
     }
 
+    #[inline]
     fn emit_map_elt_key<F>(&mut self, _idx: usize, f: F) -> Result<(), Self::Error>
     where
         F: FnOnce(&mut Self) -> Result<(), Self::Error>,
@@ -186,6 +194,7 @@ pub trait Encoder {
         f(self)
     }
 
+    #[inline]
     fn emit_map_elt_val<F>(&mut self, _idx: usize, f: F) -> Result<(), Self::Error>
     where
         F: FnOnce(&mut Self) -> Result<(), Self::Error>,
@@ -218,6 +227,7 @@ pub trait Decoder {
     fn read_str(&mut self) -> Result<Cow<'_, str>, Self::Error>;
 
     // Compound types:
+    #[inline]
     fn read_enum<T, F>(&mut self, _name: &str, f: F) -> Result<T, Self::Error>
     where
         F: FnOnce(&mut Self) -> Result<T, Self::Error>,
@@ -225,6 +235,7 @@ pub trait Decoder {
         f(self)
     }
 
+    #[inline]
     fn read_enum_variant<T, F>(&mut self, _names: &[&str], mut f: F) -> Result<T, Self::Error>
     where
         F: FnMut(&mut Self, usize) -> Result<T, Self::Error>,
@@ -233,6 +244,7 @@ pub trait Decoder {
         f(self, disr)
     }
 
+    #[inline]
     fn read_enum_variant_arg<T, F>(&mut self, _a_idx: usize, f: F) -> Result<T, Self::Error>
     where
         F: FnOnce(&mut Self) -> Result<T, Self::Error>,
@@ -259,6 +271,7 @@ pub trait Decoder {
         self.read_enum_variant_arg(f_idx, f)
     }
 
+    #[inline]
     fn read_struct<T, F>(&mut self, _s_name: &str, _len: usize, f: F) -> Result<T, Self::Error>
     where
         F: FnOnce(&mut Self) -> Result<T, Self::Error>,
@@ -266,6 +279,7 @@ pub trait Decoder {
         f(self)
     }
 
+    #[inline]
     fn read_struct_field<T, F>(
         &mut self,
         _f_name: &str,
@@ -278,6 +292,7 @@ pub trait Decoder {
         f(self)
     }
 
+    #[inline]
     fn read_tuple<T, F>(&mut self, _len: usize, f: F) -> Result<T, Self::Error>
     where
         F: FnOnce(&mut Self) -> Result<T, Self::Error>,
@@ -285,6 +300,7 @@ pub trait Decoder {
         f(self)
     }
 
+    #[inline]
     fn read_tuple_arg<T, F>(&mut self, _a_idx: usize, f: F) -> Result<T, Self::Error>
     where
         F: FnOnce(&mut Self) -> Result<T, Self::Error>,
@@ -328,6 +344,7 @@ pub trait Decoder {
         f(self, len)
     }
 
+    #[inline]
     fn read_seq_elt<T, F>(&mut self, _idx: usize, f: F) -> Result<T, Self::Error>
     where
         F: FnOnce(&mut Self) -> Result<T, Self::Error>,
@@ -343,6 +360,7 @@ pub trait Decoder {
         f(self, len)
     }
 
+    #[inline]
     fn read_map_elt_key<T, F>(&mut self, _idx: usize, f: F) -> Result<T, Self::Error>
     where
         F: FnOnce(&mut Self) -> Result<T, Self::Error>,
@@ -350,6 +368,7 @@ pub trait Decoder {
         f(self)
     }
 
+    #[inline]
     fn read_map_elt_val<T, F>(&mut self, _idx: usize, f: F) -> Result<T, Self::Error>
     where
         F: FnOnce(&mut Self) -> Result<T, Self::Error>,