Skip to content

Commit

Permalink
Add API for Alloc trait.
Browse files Browse the repository at this point in the history
Includes `alloc_zeroed` method that `RawVec` has come to depend on.

Exposed private `Layout::from_size_align` ctor to be `pub`, and added
explicit conditions for when it will panic (namely, when `align` is
not power-of-two, or if rounding up `size` to a multiple of `align`
overflows). Normalized all `Layout` construction to go through
`Layout::from_size_align`.

Addressed review feedback regarding `struct Layout` and zero-sized
layouts.

Restrict specification for `dealloc`, adding additional constraint
that the given alignment has to match that used to allocate the block.
(This is a maximally conservative constraint on the alignment. An open
question to resolve (before stabilization) is whether we can return to
a looser constraint such as the one previously specified.)

Split `fn realloc_in_place` into separate `fn grow_in_place` and `fn
shrink_in_place` methods, which have default impls that check against
usable_size for reuse. Make `realloc` default impl try `grow_in_place`
or `shrink_in_place` as appropriate before fallback on
alloc+copy+dealloc.

Drive-by: When reviewing calls to `padding_needed_for`, discovered
what I think was an over-conservative choice for its argument
alignment.  Namely, in `fn extend`, we automatically realign the whole
resulting layout to satisfy both old (self) and new alignments. When
the old alignment exceeds the new, this means we would insert
unnecessary padding. So I changed the code to pass in `next.align`
instead of `new_align` to `padding_needed_for`.

Replaced ref to `realloc_in_place` with `grow_in_place`/`shrink_in_place`.

Revised docs replacing my idiosyncratic style of `fn foo` with just
`foo` when referring to the function or method `foo`.

(Alpha-renamed `Allocator` to `Alloc`.)

Post-rebased, added `Debug` derive for `allocator::Excess` to satisfy
`missing_debug_implementations`.
  • Loading branch information
pnkfelix committed Jun 15, 2017
1 parent 258ae6d commit 066fafe
Show file tree
Hide file tree
Showing 2 changed files with 990 additions and 0 deletions.

0 comments on commit 066fafe

Please sign in to comment.