about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAndre Bogus <bogusandre@gmail.com>2018-05-02 23:53:40 +0200
committerAndre Bogus <bogusandre@gmail.com>2018-05-02 23:53:40 +0200
commit1cefb5ce310fe7f799d0926d2644a25a567d2ddb (patch)
tree1ec19184d2f65c33d9b8342dcc3a53971977e064
parent3eadd754730923936ca2ce9c2d303fcac9af099f (diff)
downloadrust-1cefb5ce310fe7f799d0926d2644a25a567d2ddb.tar.gz
rust-1cefb5ce310fe7f799d0926d2644a25a567d2ddb.zip
nano-optimization for memchr::repeat_byte
-rw-r--r--src/libcore/slice/memchr.rs15
1 files changed, 2 insertions, 13 deletions
diff --git a/src/libcore/slice/memchr.rs b/src/libcore/slice/memchr.rs
index 69c9cb37dcf..469404f7f6b 100644
--- a/src/libcore/slice/memchr.rs
+++ b/src/libcore/slice/memchr.rs
@@ -39,21 +39,10 @@ fn repeat_byte(b: u8) -> usize {
     (b as usize) << 8 | b as usize
 }
 
-#[cfg(target_pointer_width = "32")]
+#[cfg(not(target_pointer_width = "16"))]
 #[inline]
 fn repeat_byte(b: u8) -> usize {
-    let mut rep = (b as usize) << 8 | b as usize;
-    rep = rep << 16 | rep;
-    rep
-}
-
-#[cfg(target_pointer_width = "64")]
-#[inline]
-fn repeat_byte(b: u8) -> usize {
-    let mut rep = (b as usize) << 8 | b as usize;
-    rep = rep << 16 | rep;
-    rep = rep << 32 | rep;
-    rep
+    (b as usize) * (::usize::MAX / 255)
 }
 
 /// Return the first index matching the byte `x` in `text`.