Inline things
This commit is contained in:
parent
e955dbca99
commit
946ea1453d
@ -298,6 +298,7 @@ pub struct DroplessArena {
|
||||
unsafe impl Send for DroplessArena {}
|
||||
|
||||
impl Default for DroplessArena {
|
||||
#[inline]
|
||||
fn default() -> DroplessArena {
|
||||
DroplessArena {
|
||||
ptr: Cell::new(0 as *mut u8),
|
||||
@ -319,6 +320,7 @@ impl DroplessArena {
|
||||
false
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn align(&self, align: usize) {
|
||||
let final_address = ((self.ptr.get() as usize) + align - 1) & !(align - 1);
|
||||
self.ptr.set(final_address as *mut u8);
|
||||
|
@ -3614,6 +3614,7 @@ assert_eq!(3", stringify!($SelfT), ".checked_next_power_of_two(), Some(4));
|
||||
assert_eq!(", stringify!($SelfT), "::max_value().checked_next_power_of_two(), None);",
|
||||
$EndFeature, "
|
||||
```"),
|
||||
#[inline]
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub fn checked_next_power_of_two(self) -> Option<Self> {
|
||||
self.one_less_than_next_power_of_two().checked_add(1)
|
||||
|
@ -849,6 +849,7 @@ impl<K, V, S> HashMap<K, V, S>
|
||||
/// let mut map: HashMap<&str, i32> = HashMap::new();
|
||||
/// map.reserve(10);
|
||||
/// ```
|
||||
#[inline]
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub fn reserve(&mut self, additional: usize) {
|
||||
match self.reserve_internal(additional, Infallible) {
|
||||
@ -880,6 +881,7 @@ impl<K, V, S> HashMap<K, V, S>
|
||||
self.reserve_internal(additional, Fallible)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn reserve_internal(&mut self, additional: usize, fallibility: Fallibility)
|
||||
-> Result<(), CollectionAllocErr> {
|
||||
|
||||
@ -1571,6 +1573,7 @@ impl<K, V, S> HashMap<K, V, S>
|
||||
/// so that the map now contains keys which compare equal, search may start
|
||||
/// acting erratically, with two keys randomly masking each other. Implementations
|
||||
/// are free to assume this doesn't happen (within the limits of memory-safety).
|
||||
#[inline(always)]
|
||||
#[unstable(feature = "hash_raw_entry", issue = "56167")]
|
||||
pub fn raw_entry_mut(&mut self) -> RawEntryBuilderMut<K, V, S> {
|
||||
self.reserve(1);
|
||||
@ -1911,6 +1914,7 @@ impl<'a, K, V, S> RawEntryBuilderMut<'a, K, V, S>
|
||||
}
|
||||
|
||||
/// Create a `RawEntryMut` from the given key and its hash.
|
||||
#[inline]
|
||||
#[unstable(feature = "hash_raw_entry", issue = "56167")]
|
||||
pub fn from_key_hashed_nocheck<Q: ?Sized>(self, hash: u64, k: &Q) -> RawEntryMut<'a, K, V, S>
|
||||
where K: Borrow<Q>,
|
||||
@ -1919,6 +1923,7 @@ impl<'a, K, V, S> RawEntryBuilderMut<'a, K, V, S>
|
||||
self.from_hash(hash, |q| q.borrow().eq(k))
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn search<F>(self, hash: u64, is_match: F, compare_hashes: bool) -> RawEntryMut<'a, K, V, S>
|
||||
where for<'b> F: FnMut(&'b K) -> bool,
|
||||
{
|
||||
@ -1941,6 +1946,7 @@ impl<'a, K, V, S> RawEntryBuilderMut<'a, K, V, S>
|
||||
}
|
||||
}
|
||||
/// Create a `RawEntryMut` from the given hash.
|
||||
#[inline]
|
||||
#[unstable(feature = "hash_raw_entry", issue = "56167")]
|
||||
pub fn from_hash<F>(self, hash: u64, is_match: F) -> RawEntryMut<'a, K, V, S>
|
||||
where for<'b> F: FnMut(&'b K) -> bool,
|
||||
@ -2215,6 +2221,7 @@ impl<'a, K, V, S> RawVacantEntryMut<'a, K, V, S> {
|
||||
|
||||
/// Sets the value of the entry with the VacantEntry's key,
|
||||
/// and returns a mutable reference to it.
|
||||
#[inline]
|
||||
#[unstable(feature = "hash_raw_entry", issue = "56167")]
|
||||
pub fn insert_hashed_nocheck(self, hash: u64, key: K, value: V) -> (&'a mut K, &'a mut V) {
|
||||
let hash = SafeHash::new(hash);
|
||||
|
@ -329,6 +329,7 @@ impl<K, V, M> Put<K, V> for FullBucket<K, V, M>
|
||||
}
|
||||
|
||||
impl<K, V, M: Deref<Target = RawTable<K, V>>> Bucket<K, V, M> {
|
||||
#[inline]
|
||||
pub fn new(table: M, hash: SafeHash) -> Bucket<K, V, M> {
|
||||
Bucket::at_index(table, hash.inspect() as usize)
|
||||
}
|
||||
@ -342,6 +343,7 @@ impl<K, V, M: Deref<Target = RawTable<K, V>>> Bucket<K, V, M> {
|
||||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn at_index(table: M, ib_index: usize) -> Bucket<K, V, M> {
|
||||
// if capacity is 0, then the RawBucket will be populated with bogus pointers.
|
||||
// This is an uncommon case though, so avoid it in release builds.
|
||||
@ -654,6 +656,7 @@ impl<K, V, M> GapThenFull<K, V, M>
|
||||
|
||||
// Returns a Layout which describes the allocation required for a hash table,
|
||||
// and the offset of the array of (key, value) pairs in the allocation.
|
||||
#[inline(always)]
|
||||
fn calculate_layout<K, V>(capacity: usize) -> Result<(Layout, usize), LayoutErr> {
|
||||
let hashes = Layout::array::<HashUint>(capacity)?;
|
||||
let pairs = Layout::array::<(K, V)>(capacity)?;
|
||||
@ -722,6 +725,7 @@ impl<K, V> RawTable<K, V> {
|
||||
}
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
fn raw_bucket_at(&self, index: usize) -> RawBucket<K, V> {
|
||||
let (_, pairs_offset) = calculate_layout::<K, V>(self.capacity())
|
||||
.unwrap_or_else(|_| unsafe { hint::unreachable_unchecked() });
|
||||
|
Loading…
x
Reference in New Issue
Block a user