mirror of
https://github.com/rust-lang/rust.git
synced 2025-06-07 20:58:39 +00:00
vec: rm inline(never) hack
just avoid giving an inline hint in the first place
This commit is contained in:
parent
fd5f8d90c5
commit
00da76dfbe
@ -1136,7 +1136,6 @@ impl<T> OwnedVector<T> for ~[T] {
|
|||||||
*
|
*
|
||||||
* * n - The number of elements to reserve space for
|
* * n - The number of elements to reserve space for
|
||||||
*/
|
*/
|
||||||
#[inline]
|
|
||||||
#[cfg(stage0)]
|
#[cfg(stage0)]
|
||||||
fn reserve(&mut self, n: uint) {
|
fn reserve(&mut self, n: uint) {
|
||||||
// Only make the (slow) call into the runtime if we have to
|
// Only make the (slow) call into the runtime if we have to
|
||||||
@ -1170,7 +1169,6 @@ impl<T> OwnedVector<T> for ~[T] {
|
|||||||
*
|
*
|
||||||
* * n - The number of elements to reserve space for
|
* * n - The number of elements to reserve space for
|
||||||
*/
|
*/
|
||||||
#[inline]
|
|
||||||
#[cfg(not(stage0))]
|
#[cfg(not(stage0))]
|
||||||
fn reserve(&mut self, n: uint) {
|
fn reserve(&mut self, n: uint) {
|
||||||
// Only make the (slow) call into the runtime if we have to
|
// Only make the (slow) call into the runtime if we have to
|
||||||
@ -1228,21 +1226,12 @@ impl<T> OwnedVector<T> for ~[T] {
|
|||||||
let repr: **raw::VecRepr = transmute(&mut *self);
|
let repr: **raw::VecRepr = transmute(&mut *self);
|
||||||
let fill = (**repr).unboxed.fill;
|
let fill = (**repr).unboxed.fill;
|
||||||
if (**repr).unboxed.alloc <= fill {
|
if (**repr).unboxed.alloc <= fill {
|
||||||
// need more space
|
let new_len = self.len() + 1;
|
||||||
reserve_no_inline(self);
|
self.reserve_at_least(new_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
self.push_fast(t);
|
self.push_fast(t);
|
||||||
}
|
}
|
||||||
|
|
||||||
// this peculiar function is because reserve_at_least is very
|
|
||||||
// large (because of reserve), and will be inlined, which
|
|
||||||
// makes push too large.
|
|
||||||
#[inline(never)]
|
|
||||||
fn reserve_no_inline<T>(v: &mut ~[T]) {
|
|
||||||
let new_len = v.len() + 1;
|
|
||||||
v.reserve_at_least(new_len);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// This doesn't bother to make sure we have space.
|
// This doesn't bother to make sure we have space.
|
||||||
|
Loading…
Reference in New Issue
Block a user