Skip to content

Commit 5030794

Browse files
committed
Merge branch 'master' of https://github.com/rust-lang/rust
2 parents 852ff1f + b76ee83 commit 5030794

File tree

116 files changed

+1483
-893
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

116 files changed

+1483
-893
lines changed

src/Cargo.lock

+15-13
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,8 @@ dependencies = [
197197
"crates-io 0.21.0",
198198
"crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
199199
"crypto-hash 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
200-
"curl 0.4.18 (registry+https://github.com/rust-lang/crates.io-index)",
200+
"curl 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)",
201+
"curl-sys 0.4.15 (registry+https://github.com/rust-lang/crates.io-index)",
201202
"env_logger 0.5.12 (registry+https://github.com/rust-lang/crates.io-index)",
202203
"failure 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
203204
"filetime 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -230,7 +231,7 @@ dependencies = [
230231
"serde_ignored 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
231232
"serde_json 1.0.31 (registry+https://github.com/rust-lang/crates.io-index)",
232233
"shell-escape 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
233-
"tar 0.4.16 (registry+https://github.com/rust-lang/crates.io-index)",
234+
"tar 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)",
234235
"tempfile 3.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
235236
"termcolor 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
236237
"toml 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -474,7 +475,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
474475
name = "crates-io"
475476
version = "0.21.0"
476477
dependencies = [
477-
"curl 0.4.18 (registry+https://github.com/rust-lang/crates.io-index)",
478+
"curl 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)",
478479
"failure 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
479480
"serde 1.0.75 (registry+https://github.com/rust-lang/crates.io-index)",
480481
"serde_derive 1.0.75 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -561,10 +562,10 @@ dependencies = [
561562

562563
[[package]]
563564
name = "curl"
564-
version = "0.4.18"
565+
version = "0.4.19"
565566
source = "registry+https://github.com/rust-lang/crates.io-index"
566567
dependencies = [
567-
"curl-sys 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)",
568+
"curl-sys 0.4.15 (registry+https://github.com/rust-lang/crates.io-index)",
568569
"kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
569570
"libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)",
570571
"openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -576,7 +577,7 @@ dependencies = [
576577

577578
[[package]]
578579
name = "curl-sys"
579-
version = "0.4.13"
580+
version = "0.4.15"
580581
source = "registry+https://github.com/rust-lang/crates.io-index"
581582
dependencies = [
582583
"cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -848,7 +849,7 @@ name = "git2-curl"
848849
version = "0.8.2"
849850
source = "registry+https://github.com/rust-lang/crates.io-index"
850851
dependencies = [
851-
"curl 0.4.18 (registry+https://github.com/rust-lang/crates.io-index)",
852+
"curl 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)",
852853
"git2 0.7.5 (registry+https://github.com/rust-lang/crates.io-index)",
853854
"log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)",
854855
"url 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -966,7 +967,7 @@ dependencies = [
966967
"flate2 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
967968
"lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
968969
"rayon 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
969-
"tar 0.4.16 (registry+https://github.com/rust-lang/crates.io-index)",
970+
"tar 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)",
970971
"walkdir 2.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
971972
"winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
972973
"xz2 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1088,7 +1089,7 @@ version = "0.7.10"
10881089
source = "registry+https://github.com/rust-lang/crates.io-index"
10891090
dependencies = [
10901091
"cc 1.0.25 (registry+https://github.com/rust-lang/crates.io-index)",
1091-
"curl-sys 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)",
1092+
"curl-sys 0.4.15 (registry+https://github.com/rust-lang/crates.io-index)",
10921093
"libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)",
10931094
"libssh2-sys 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
10941095
"libz-sys 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2095,6 +2096,7 @@ version = "0.0.0"
20952096
dependencies = [
20962097
"bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
20972098
"rustc_cratesio_shim 0.0.0",
2099+
"smallvec 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
20982100
]
20992101

21002102
[[package]]
@@ -2838,7 +2840,7 @@ dependencies = [
28382840

28392841
[[package]]
28402842
name = "tar"
2841-
version = "0.4.16"
2843+
version = "0.4.19"
28422844
source = "registry+https://github.com/rust-lang/crates.io-index"
28432845
dependencies = [
28442846
"filetime 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -3210,8 +3212,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
32103212
"checksum crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2760899e32a1d58d5abb31129f8fae5de75220bc2176e77ff7c627ae45c918d9"
32113213
"checksum crossbeam-utils 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "677d453a17e8bd2b913fa38e8b9cf04bcdbb5be790aa294f2389661d72036015"
32123214
"checksum crypto-hash 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "09de9ee0fc255ace04c7fa0763c9395a945c37c8292bb554f8d48361d1dcf1b4"
3213-
"checksum curl 0.4.18 (registry+https://github.com/rust-lang/crates.io-index)" = "a9e5285b49b44401518c947d3b808d14d99a538a6c9ffb3ec0205c11f9fc4389"
3214-
"checksum curl-sys 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)" = "08459503c415173da1ce6b41036a37b8bfdd86af46d45abb9964d4c61fe670ef"
3215+
"checksum curl 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)" = "c7c9d851c825e0c033979d4516c9173bc19a78a96eb4d6ae51d4045440eafa16"
3216+
"checksum curl-sys 0.4.15 (registry+https://github.com/rust-lang/crates.io-index)" = "721c204978be2143fab0a84b708c49d79d1f6100b8785610f456043a90708870"
32153217
"checksum datafrog 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "16d724bf4ffe77cdceeecd461009b5f8d9e23c5d645d68bedb4586bf43e7e142"
32163218
"checksum derive-new 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ceed73957c449214f8440eec8ad7fa282b67dc9eacbb24a3085b15d60397a17a"
32173219
"checksum derive_more 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "46c7f14685a20f5dd08e7f754f2ea8cc064d8f4214ae21116c106a2768ba7b9b"
@@ -3390,7 +3392,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
33903392
"checksum syn 0.14.9 (registry+https://github.com/rust-lang/crates.io-index)" = "261ae9ecaa397c42b960649561949d69311f08eeaea86a65696e6e46517cf741"
33913393
"checksum synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6"
33923394
"checksum synstructure 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "85bb9b7550d063ea184027c9b8c20ac167cd36d3e06b3a40bceb9d746dc1a7b7"
3393-
"checksum tar 0.4.16 (registry+https://github.com/rust-lang/crates.io-index)" = "e8f41ca4a5689f06998f0247fcb60da6c760f1950cc9df2a10d71575ad0b062a"
3395+
"checksum tar 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)" = "69e16840a1e0a1f1a880b739ef1cc6a4b85496c99b8aa786ccffce6e0c15624c"
33943396
"checksum tempfile 3.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c4b103c6d08d323b92ff42c8ce62abcd83ca8efa7fd5bf7927efefec75f58c76"
33953397
"checksum tendril 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9de21546595a0873061940d994bbbc5c35f024ae4fd61ec5c5b159115684f508"
33963398
"checksum term 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5e6b677dd1e8214ea1ef4297f85dbcbed8e8cdddb561040cc998ca2551c37561"

src/liballoc/rc.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -672,14 +672,16 @@ impl<T: ?Sized> Rc<T> {
672672
// Previously, layout was calculated on the expression
673673
// `&*(ptr as *const RcBox<T>)`, but this created a misaligned
674674
// reference (see #54908).
675-
let (layout, _) = Layout::new::<RcBox<()>>()
676-
.extend(Layout::for_value(&*ptr)).unwrap();
675+
let layout = Layout::new::<RcBox<()>>()
676+
.extend(Layout::for_value(&*ptr)).unwrap().0
677+
.pad_to_align().unwrap();
677678

678679
let mem = Global.alloc(layout)
679680
.unwrap_or_else(|_| handle_alloc_error(layout));
680681

681682
// Initialize the RcBox
682683
let inner = set_data_ptr(ptr as *mut T, mem.as_ptr() as *mut u8) as *mut RcBox<T>;
684+
debug_assert_eq!(Layout::for_value(&*inner), layout);
683685

684686
ptr::write(&mut (*inner).strong, Cell::new(1));
685687
ptr::write(&mut (*inner).weak, Cell::new(1));

src/liballoc/sync.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -575,14 +575,16 @@ impl<T: ?Sized> Arc<T> {
575575
// Previously, layout was calculated on the expression
576576
// `&*(ptr as *const ArcInner<T>)`, but this created a misaligned
577577
// reference (see #54908).
578-
let (layout, _) = Layout::new::<ArcInner<()>>()
579-
.extend(Layout::for_value(&*ptr)).unwrap();
578+
let layout = Layout::new::<ArcInner<()>>()
579+
.extend(Layout::for_value(&*ptr)).unwrap().0
580+
.pad_to_align().unwrap();
580581

581582
let mem = Global.alloc(layout)
582583
.unwrap_or_else(|_| handle_alloc_error(layout));
583584

584585
// Initialize the ArcInner
585586
let inner = set_data_ptr(ptr as *mut T, mem.as_ptr() as *mut u8) as *mut ArcInner<T>;
587+
debug_assert_eq!(Layout::for_value(&*inner), layout);
586588

587589
ptr::write(&mut (*inner).strong, atomic::AtomicUsize::new(1));
588590
ptr::write(&mut (*inner).weak, atomic::AtomicUsize::new(1));

src/libcore/alloc.rs

+19-2
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,23 @@ impl Layout {
218218
len_rounded_up.wrapping_sub(len)
219219
}
220220

221+
/// Creates a layout by rounding the size of this layout up to a multiple
222+
/// of the layout's alignment.
223+
///
224+
/// Returns `Err` if the padded size would overflow.
225+
///
226+
/// This is equivalent to adding the result of `padding_needed_for`
227+
/// to the layout's current size.
228+
#[unstable(feature = "alloc_layout_extra", issue = "55724")]
229+
#[inline]
230+
pub fn pad_to_align(&self) -> Result<Layout, LayoutErr> {
231+
let pad = self.padding_needed_for(self.align());
232+
let new_size = self.size().checked_add(pad)
233+
.ok_or(LayoutErr { private: () })?;
234+
235+
Layout::from_size_align(new_size, self.align())
236+
}
237+
221238
/// Creates a layout describing the record for `n` instances of
222239
/// `self`, with a suitable amount of padding between each to
223240
/// ensure that each instance is given its requested size and
@@ -506,7 +523,7 @@ pub unsafe trait GlobalAlloc {
506523
ptr
507524
}
508525

509-
/// Shink or grow a block of memory to the given `new_size`.
526+
/// Shrink or grow a block of memory to the given `new_size`.
510527
/// The block is described by the given `ptr` pointer and `layout`.
511528
///
512529
/// If this returns a non-null pointer, then ownership of the memory block
@@ -757,7 +774,7 @@ pub unsafe trait Alloc {
757774
// realloc. alloc_excess, realloc_excess
758775

759776
/// Returns a pointer suitable for holding data described by
760-
/// a new layout with `layout`’s alginment and a size given
777+
/// a new layout with `layout`’s alignment and a size given
761778
/// by `new_size`. To
762779
/// accomplish this, this may extend or shrink the allocation
763780
/// referenced by `ptr` to fit the new layout.

src/libcore/future/future.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use ops;
1717
use pin::Pin;
1818
use task::{Poll, LocalWaker};
1919

20-
/// A future represents an asychronous computation.
20+
/// A future represents an asynchronous computation.
2121
///
2222
/// A future is a value that may not have finished computing yet. This kind of
2323
/// "asynchronous value" makes it possible for a thread to continue doing useful

src/libcore/intrinsics.rs

+14
Original file line numberDiff line numberDiff line change
@@ -1465,6 +1465,20 @@ extern "rust-intrinsic" {
14651465
/// y < 0 or y >= N, where N is the width of T in bits.
14661466
pub fn unchecked_shr<T>(x: T, y: T) -> T;
14671467

1468+
/// Performs rotate left.
1469+
/// The stabilized versions of this intrinsic are available on the integer
1470+
/// primitives via the `rotate_left` method. For example,
1471+
/// [`std::u32::rotate_left`](../../std/primitive.u32.html#method.rotate_left)
1472+
#[cfg(not(stage0))]
1473+
pub fn rotate_left<T>(x: T, y: T) -> T;
1474+
1475+
/// Performs rotate right.
1476+
/// The stabilized versions of this intrinsic are available on the integer
1477+
/// primitives via the `rotate_right` method. For example,
1478+
/// [`std::u32::rotate_right`](../../std/primitive.u32.html#method.rotate_right)
1479+
#[cfg(not(stage0))]
1480+
pub fn rotate_right<T>(x: T, y: T) -> T;
1481+
14681482
/// Returns (a + b) mod 2<sup>N</sup>, where N is the width of T in bits.
14691483
/// The stabilized versions of this intrinsic are available on the integer
14701484
/// primitives via the `wrapping_add` method. For example,

src/libcore/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ mod nonzero;
228228
mod tuple;
229229
mod unit;
230230

231-
// Pull in the the `coresimd` crate directly into libcore. This is where all the
231+
// Pull in the `coresimd` crate directly into libcore. This is where all the
232232
// architecture-specific (and vendor-specific) intrinsics are defined. AKA
233233
// things like SIMD and such. Note that the actual source for all this lies in a
234234
// different repository, rust-lang-nursery/stdsimd. That's why the setup here is

src/libcore/macros.rs

+3-4
Original file line numberDiff line numberDiff line change
@@ -350,9 +350,8 @@ macro_rules! try {
350350
/// assert_eq!(v, b"s = \"abc 123\"");
351351
/// ```
352352
///
353-
/// Note: This macro can be used in `no_std` setups as well
354-
/// In a `no_std` setup you are responsible for the
355-
/// implementation details of the components.
353+
/// Note: This macro can be used in `no_std` setups as well.
354+
/// In a `no_std` setup you are responsible for the implementation details of the components.
356355
///
357356
/// ```no_run
358357
/// # extern crate core;
@@ -440,7 +439,7 @@ macro_rules! writeln {
440439
///
441440
/// If the determination that the code is unreachable proves incorrect, the
442441
/// program immediately terminates with a [`panic!`]. The function [`unreachable_unchecked`],
443-
/// which belongs to the [`std::hint`] module, informs the compilier to
442+
/// which belongs to the [`std::hint`] module, informs the compiler to
444443
/// optimize the code out of the release version entirely.
445444
///
446445
/// [`panic!`]: ../std/macro.panic.html

src/libcore/mem.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ pub fn forget<T>(t: T) {
202202
///
203203
/// ## Size of Enums
204204
///
205-
/// Enums that carry no data other than the descriminant have the same size as C enums
205+
/// Enums that carry no data other than the discriminant have the same size as C enums
206206
/// on the platform they are compiled for.
207207
///
208208
/// ## Size of Unions
@@ -1081,7 +1081,7 @@ impl<T> MaybeUninit<T> {
10811081
///
10821082
/// # Unsafety
10831083
///
1084-
/// It is up to the caller to guarantee that the the `MaybeUninit` really is in an initialized
1084+
/// It is up to the caller to guarantee that the `MaybeUninit` really is in an initialized
10851085
/// state, otherwise this will immediately cause undefined behavior.
10861086
#[unstable(feature = "maybe_uninit", issue = "53491")]
10871087
pub unsafe fn into_inner(self) -> T {
@@ -1092,7 +1092,7 @@ impl<T> MaybeUninit<T> {
10921092
///
10931093
/// # Unsafety
10941094
///
1095-
/// It is up to the caller to guarantee that the the `MaybeUninit` really is in an initialized
1095+
/// It is up to the caller to guarantee that the `MaybeUninit` really is in an initialized
10961096
/// state, otherwise this will immediately cause undefined behavior.
10971097
#[unstable(feature = "maybe_uninit", issue = "53491")]
10981098
pub unsafe fn get_ref(&self) -> &T {
@@ -1103,7 +1103,7 @@ impl<T> MaybeUninit<T> {
11031103
///
11041104
/// # Unsafety
11051105
///
1106-
/// It is up to the caller to guarantee that the the `MaybeUninit` really is in an initialized
1106+
/// It is up to the caller to guarantee that the `MaybeUninit` really is in an initialized
11071107
/// state, otherwise this will immediately cause undefined behavior.
11081108
#[unstable(feature = "maybe_uninit", issue = "53491")]
11091109
pub unsafe fn get_mut(&mut self) -> &mut T {

src/libcore/num/mod.rs

+14-2
Original file line numberDiff line numberDiff line change
@@ -2152,6 +2152,7 @@ Basic usage:
21522152
", $Feature, "assert_eq!(", stringify!($SelfT), "::min_value(), 0);", $EndFeature, "
21532153
```"),
21542154
#[stable(feature = "rust1", since = "1.0.0")]
2155+
#[rustc_promotable]
21552156
#[inline]
21562157
pub const fn min_value() -> Self { 0 }
21572158
}
@@ -2168,6 +2169,7 @@ Basic usage:
21682169
stringify!($MaxV), ");", $EndFeature, "
21692170
```"),
21702171
#[stable(feature = "rust1", since = "1.0.0")]
2172+
#[rustc_promotable]
21712173
#[inline]
21722174
pub const fn max_value() -> Self { !0 }
21732175
}
@@ -2301,7 +2303,12 @@ assert_eq!(n.rotate_left(", $rot, "), m);
23012303
#[rustc_const_unstable(feature = "const_int_rotate")]
23022304
#[inline]
23032305
pub const fn rotate_left(self, n: u32) -> Self {
2304-
(self << (n % $BITS)) | (self >> (($BITS - (n % $BITS)) % $BITS))
2306+
#[cfg(not(stage0))] {
2307+
unsafe { intrinsics::rotate_left(self, n as $SelfT) }
2308+
}
2309+
#[cfg(stage0)] {
2310+
(self << (n % $BITS)) | (self >> (($BITS - (n % $BITS)) % $BITS))
2311+
}
23052312
}
23062313
}
23072314

@@ -2326,7 +2333,12 @@ assert_eq!(n.rotate_right(", $rot, "), m);
23262333
#[rustc_const_unstable(feature = "const_int_rotate")]
23272334
#[inline]
23282335
pub const fn rotate_right(self, n: u32) -> Self {
2329-
(self >> (n % $BITS)) | (self << (($BITS - (n % $BITS)) % $BITS))
2336+
#[cfg(not(stage0))] {
2337+
unsafe { intrinsics::rotate_right(self, n as $SelfT) }
2338+
}
2339+
#[cfg(stage0)] {
2340+
(self >> (n % $BITS)) | (self << (($BITS - (n % $BITS)) % $BITS))
2341+
}
23302342
}
23312343
}
23322344

src/libcore/pin.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
//! It is sometimes useful to have objects that are guaranteed to not move,
44
//! in the sense that their placement in memory does not change, and can thus be relied upon.
55
//!
6-
//! A prime example of such a scenario would be building self-referencial structs,
6+
//! A prime example of such a scenario would be building self-referential structs,
77
//! since moving an object with pointers to itself will invalidate them,
88
//! which could cause undefined behavior.
99
//!
@@ -39,7 +39,7 @@
3939
//! use std::marker::Pinned;
4040
//! use std::ptr::NonNull;
4141
//!
42-
//! // This is a self referencial struct since the slice field points to the data field.
42+
//! // This is a self-referential struct since the slice field points to the data field.
4343
//! // We cannot inform the compiler about that with a normal reference,
4444
//! // since this pattern cannot be described with the usual borrowing rules.
4545
//! // Instead we use a raw pointer, though one which is known to not be null,

0 commit comments

Comments
 (0)