Commit Graph

64939 Commits

Author SHA1 Message Date
Alex Crichton 609d43a15a Minor Allocator doc fix 2017-06-19 07:51:00 -07:00
Alex Crichton 879ec55d2e Ignore test for not-closed issue
Confirmed on IRC that the bug isn't fully fixed, and the "resurgence" here isn't
the fault of this PR.
2017-06-19 07:49:50 -07:00
Alex Crichton 5354b91ce5 Correct location of unstable book docs 2017-06-17 11:48:01 -07:00
Felix S. Klock II 12d4d12fef implement Error trait for error structs added in allocator API. 2017-06-15 23:48:31 +02:00
Felix S. Klock II 57ab9e7e7c placeholder for documentation of `allocator_api` library feature.
Alpha-renamed `Allocator` to `Alloc`.
2017-06-15 23:48:31 +02:00
Felix S. Klock II 23ab50455f Allocator integration in `RawVec`.
Includes methods exposing underlying allocator and the dellocation
routine.

Includes test illustrating a tiny `Alloc` that just bounds the total
bytes allocated.

Alpha-renamed `Allocator` to `Alloc` (and `HeapAllocator` to `HeapAlloc`).
2017-06-15 23:48:30 +02:00
Felix S. Klock II 65d02b26c5 Add impl of `Alloc` for the global rust heap.
Alpha-renamed `HeapAllocator` to `HeapAlloc`.

`<HeapAlloc as Alloc>::alloc_zeroed` is hooked up to `heap::allocate_zeroed`.

`HeapAlloc::realloc` falls back on alloc+copy+realloc on align mismatch.
2017-06-15 23:48:30 +02:00
Felix S. Klock II 1d3bc4e90f Changed `Layout::from_size_align` to return `Option`.
Added `unwrap` calls in all the places where I can infer that the
conditions are met to avoid panic (or when the calling method itself
says it will panic in such a case).
2017-06-15 23:48:30 +02:00
Felix S. Klock II 066fafe206 Add API for `Alloc` trait.
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`.
2017-06-15 23:48:12 +02:00
bors 258ae6dd9b Auto merge of #42648 - murarth:merge-alloc-collections, r=alexcrichton
Merge crate `collections` into `alloc`

This is a necessary step in order to merge #42565
2017-06-15 12:37:54 +00:00
bors 16c27bf713 Auto merge of #42623 - VBChunguk:fix-older-urls, r=steveklabnik
Update older URLs pointing to the first edition of the Book

Fixes #42589.
2017-06-15 09:52:11 +00:00
bors 119066ff2b Auto merge of #42625 - michaelwoerister:dep-node-debug, r=nikomatsakis
incr.comp.: Make DepNode's std::fmt::Debug implementation useful again.

With #42537 a regular `DepNode` only contains an opaque hash as its identifier. In most cases, this hash is actually a `DefPathHash` and we can reconstruct the `DefId` it came from via a table lookup --- and then use that to print something intelligible for debug outputs. For cases where we cannot reconstruct information from the DepNode's hash, this PR will cache a string representation of the `DepNode` in a side-table. This string is later used for debug outputs.

r? @nikomatsakis
2017-06-15 06:52:42 +00:00
bors 0189cec5d4 Auto merge of #42665 - aidanhs:aphs-simplify-init-repos, r=Mark-Simulacrum
Use --depth to speed up pristine submodule cloning

In addition, remove all the unused cache stuff

r? @Mark-Simulacrum
2017-06-15 02:17:07 +00:00
Aidan Hobson Sayers d0c1e6480c Use --depth to speed up pristine submodule cloning
In addition, remove all the unused cache stuff
2017-06-15 00:31:39 +01:00
Wonwoo Choi 3cb7825986 Update older URLs pointing to the first edition of the Book
`compiler-plugins.html` is moved into the Unstable Book.
Explanation is slightly modified to match the change.
2017-06-15 00:04:00 +09:00
bors 554c685b0b Auto merge of #42523 - clarcharr:refactor_ops, r=brson
Refactor ops.rs

This refactors ops.rs into several different modules internally, as the file has gotten quite big. None of these modules are actually exported, but this should make maintaining it much easier. I've avoided the ambition of exporting the modules because they can more easily be rearranged after this commit goes through, even though it'd be cool to potentially export the modules in the future.

I've separated the creation of each file into a separate commit so that this is easier to read.

Redone version of #42269 with the movement of `RangeArgument` moved.
2017-06-14 11:17:31 +00:00
bors dfa7e21e4e Auto merge of #42433 - marco-c:profiling, r=alexcrichton
Build instruction profiler runtime as part of compiler-rt

r? @alexcrichton

This is #38608 with some fixes.

Still missing:
- [x] testing with profiler enabled on some builders (on which ones? Should I add the option to some of the already existing configurations, or create a new configuration?);
- [x] enabling distribution (on which builders?);
- [x] documentation.
2017-06-14 08:46:14 +00:00
Murarth eadda7665e Merge crate `collections` into `alloc` 2017-06-13 23:37:34 -07:00
bors e40ef964fe Auto merge of #42644 - frewsxcv:rollup, r=frewsxcv
Rollup of 6 pull requests

- Successful merges: #42408, #42428, #42496, #42597, #42636, #42638
- Failed merges: #42612
2017-06-14 00:40:10 +00:00
Corey Farwell 9242f22666 Rollup merge of #42638 - arthurpaimarnold:lexer_rule_for_octal, r=petrochenkov
Possible mistake in lexer rule for octal integer

Original rule allowed for digits 0-8, but octal is 0-7.

The compiler correctly prevents you from placing an 8 in an octal, so I'm assuming this is caught on a later stage. Still, shouldn't the lexer already catch this?
2017-06-13 17:15:04 -04:00
Corey Farwell d60b291c8f Rollup merge of #42636 - GuillaumeGomez:new-error-codes-next2, r=eddyb
Add E0617

Part of #42229.

cc @Susurrus @frewsxcv @QuietMisdreavus
2017-06-13 17:15:03 -04:00
Corey Farwell 664ab45796 Rollup merge of #42597 - mark-buer:park_timeout_example_fix, r=alexcrichton
Capture elapsed duration in Thread::park_timeout example

`beginning_park.elapsed()` might return a larger value within the loop as compared to that checked in the loop conditional.
Since `Duration` arithmetic is checked, hitting such an edge case will cause a panic.
2017-06-13 17:15:02 -04:00
Corey Farwell 7463cf5faf Rollup merge of #42496 - Razaekel:feature/integer_max-min, r=BurntSushi
Add max and min to Ord

Pursuant to issue #25663, this PR adds max and min methods with default implementations to std::cmp::Ord. It also modifies std::cmp::max|min to internally alias to Ord::max|min, so that any overrides of the default implementations are automatically used by std::cmp::max|min.

Closes #25663
2017-06-13 17:15:00 -04:00
Corey Farwell 78d5d37235 Rollup merge of #42428 - scottmcm:str-get-overflow, r=sfackler
Add overflow checking for `str::get` with inclusive ranges

Fixes https://github.com/rust-lang/rust/issues/42401

Two commits here:

1. The first makes `str::index` just call `SliceIndex<str>::index`.  It's intended to have no behavior change, except where the two methods were inconsistent.
2. The second actually adds the overflow checking to `get(_mut)` (and tests for it)
2017-06-13 17:14:59 -04:00
Corey Farwell 02179bd251 Rollup merge of #42408 - bjorn3:patch-2, r=michaelwoerister
Add docs to librustc/hir/check_attr.rs

Also moved `check_attribute` up to ease reading.
2017-06-13 17:14:59 -04:00
Guillaume Gomez a5dc963974 Add E0617 2017-06-13 23:10:43 +02:00
Arthur Arnold c291e87dae changed upper bound digit in octal rule to 7 2017-06-13 17:08:12 -03:00
Marco Castelluccio 5c084fd8ed Add libprofiler_builtins to the list of paths for the rust-src component 2017-06-13 20:22:43 +01:00
Marco Castelluccio dba9f84dc4 Fix gcc version required by libprofiler_builtins 2017-06-13 20:21:58 +01:00
bjorn3 e75937022e Add docs to librustc/hir/check_attr.rs 2017-06-13 18:32:39 +02:00
Michael Woerister e323652728 dep_node: Add comment about method specialization being just a performance optimization 2017-06-13 17:11:53 +02:00
bors 03abb1bd70 Auto merge of #42627 - michaelwoerister:no-ident-in-def-path, r=eddyb
incr.comp.: Don't use Ident in DefPath because that's unstable across compilation sessions

Fixes https://github.com/rust-lang/rust/issues/42550.

cc @jseyfried @nikomatsakis

r? @eddyb
2017-06-13 13:59:38 +00:00
Michael Woerister d714b9790b incr.comp.: Don't use Ident in DefPath because that's unstable across compilation sessions. 2017-06-13 13:47:13 +02:00
bors 9b5b514c8d Auto merge of #42576 - nikomatsakis:incr-comp-less-tasks, r=michaelwoerister
prune some tasks and depnode variants

Pick some low-hanging fruit towards the goal of removing the older tasks.

r? @michaelwoerister
2017-06-13 11:24:24 +00:00
Michael Woerister 5b5499d5e6 incr.comp.: Make DepNode's std::fmt::Debug implementation useful again. 2017-06-13 12:27:02 +02:00
bors 9adf969cd8 Auto merge of #42608 - ollie27:rustdoc_variant_reexport, r=QuietMisdreavus
rustdoc: Fix missing enum variant reexports

Fixes #35488
2017-06-13 08:54:23 +00:00
bors e7fffa2211 Auto merge of #42471 - nrc:save-sig-2, r=eddyb
save-analysis: signatures for everything!
2017-06-13 06:20:12 +00:00
Nick Cameron ffd83fdf7d Update RLS again 2017-06-13 15:15:35 +12:00
bors add847a82d Auto merge of #42566 - arthurprs:update-jemalloc, r=alexcrichton
Revert "Update jemalloc to 4.5.0"

This reverts commit 65d0be3b7b due to bug https://github.com/jemalloc/jemalloc/issues/895.

CC @alexcrichton
2017-06-13 02:30:12 +00:00
Marco Castelluccio d7039fb2b9 Fill in tracking issue for the profile feature 2017-06-12 23:10:28 +01:00
Marco Castelluccio 8748bdd353 Redefine strdup, open, fdopen as _strdup, _open, _fdopen to avoid linking errors on MSVC 2017-06-12 23:08:57 +01:00
Marco Castelluccio 900ba559b6 Compile WindowsMMap too on MSVC 2017-06-12 23:08:08 +01:00
Oliver Middleton 68ccba81ae rustdoc: Fix missing enum variant reexports 2017-06-12 22:42:20 +01:00
Niko Matsakis 36973f743f consider closures/ty-fn-defs when making trait selection keys
Fixes #42602.
2017-06-12 17:23:21 -04:00
Niko Matsakis f61bee340c kill dep-graph-unrelated test
Doesnt' seem to add much value, and since we don't track
`TransCrateItem` anymore, it's not clear what to translate it to.
2017-06-12 16:01:31 -04:00
Niko Matsakis 03ff38e018 kill various DepNode variants 2017-06-12 16:01:31 -04:00
Niko Matsakis 3f99118871 kill various tasks we no longer need and remove outdated README text
In the case of `TransCrateItem`, I had to tweak the tests a bit, but
it's a concept that doesn't work well under new system.
2017-06-12 16:00:31 -04:00
bors cfb5debbcb Auto merge of #42605 - frewsxcv:rollup, r=frewsxcv
Rollup of 4 pull requests

- Successful merges: #42579, #42586, #42592, #42594
- Failed merges:
2017-06-12 16:40:04 +00:00
Corey Farwell 3023cc49c8 Rollup merge of #42594 - ollie27:rustdoc_assoc_type_links, r=steveklabnik
rustdoc: Link directly to associated types

Rather than just linking to the trait.

Also simplifies the logic used to decide whether to render the full
QPath.
2017-06-12 12:39:49 -04:00
Corey Farwell 87426195ec Rollup merge of #42592 - ollie27:rustdoc_empty_modules, r=steveklabnik
rustdoc: Stop stripping empty modules

There is no good reason to strip empty modules with no documentation and
doing so causes subtle problems.

Fixes #42590
2017-06-12 12:39:48 -04:00