Commit Graph

296 Commits

Author SHA1 Message Date
bors
415e55a02c auto merge of #11071 : huonw/rust/quiet-test, r=cmr 2013-12-19 18:51:39 -08:00
Huon Wilson
c00104f36a std: silence warnings when compiling test. 2013-12-20 01:26:03 +11:00
bors
e86cdaf23d auto merge of #11061 : huonw/rust/opt-unsafe-vec, r=alexcrichton
Before:

```
test vec::bench::random_inserts                     ... bench:     15025 ns/iter (+/- 409)
test vec::bench::random_removes                     ... bench:     16063 ns/iter (+/- 276)
```

After:

```
test vec::bench::random_inserts                     ... bench:      5257 ns/iter (+/- 321)
test vec::bench::random_removes                     ... bench:      4980 ns/iter (+/- 94)
```
2013-12-19 04:26:34 -08:00
Huon Wilson
acd2be46f1 std::vec: use some unsafe code to optimise remove.
Also, add `.remove_opt` and replace `.unshift` with `.remove(0)`. The
code size reduction seem to compensate for not having the optimised
special cases.

This makes the included benchmark more than 3 times faster.
2013-12-19 23:20:20 +11:00
Huon Wilson
81632513c1 std::vec: replace .insert with a small amount of unsafe code.
This makes the included benchmark more than 3 times faster. Also,
`.unshift(x)` is now faster as `.insert(0, x)` which can reuse the
allocation if necessary.
2013-12-19 14:00:44 +11:00
Huon Wilson
9177f7ecb4 std::vec: remove .as_muf_buf, replaced by .as_mut_ptr & .len. 2013-12-19 10:18:02 +11:00
Huon Wilson
4c79b22ef2 std::vec: remove .as_imm_buf, replaced by .as_ptr & .len.
There's no need for the restrictions of a closure with the above methods.
2013-12-19 09:26:13 +11:00
bors
fb6ec38352 auto merge of #10998 : thestinger/rust/iter, r=alexcrichton 2013-12-17 05:11:41 -08:00
bors
793eb1d38d auto merge of #10996 : huonw/rust/more-vec-raw, r=cmr
The removal of the aliasing &mut[] and &[] from `shift_opt` also comes with its simplification.

The above also allows the use of `copy_nonoverlapping_memory` in `[].copy_memory` (I did an audit of each use of `.copy_memory` and `std::vec::bytes::copy_memory`, and I believe none of them are called with arguments can ever alias). This changes requires that `unsafe` code using `copy_memory` **needs** to respect the aliasing rules of `&mut[]`.
2013-12-17 03:51:40 -08:00
Huon Wilson
dd355700cf std::vec: make init_elem nicer by doing fewer moves. 2013-12-17 08:36:04 +11:00
Huon Wilson
8a5a5922c6 std::vec: convert .copy_memory to use copy_nonoverlapping_memory.
It is required that &mut[]s are disjoint from all other &(mut)[]s, so
this assumption is ok.
2013-12-17 08:36:04 +11:00
Huon Wilson
5c147cc408 std::vec::bytes: remove the reference to overlapping src and dest in
docs for copy_memory.

&mut [u8] and &[u8] really shouldn't be overlapping at all (part of the
uniqueness/aliasing guarantee of &mut), so no point in encouraging it.
2013-12-17 08:36:04 +11:00
Huon Wilson
d0ae820765 std::vec::raw: convert copy_memory to a method. 2013-12-17 08:36:01 +11:00
Huon Wilson
ad20a78c54 std::vec::raw: convert init_elem to a method. 2013-12-17 08:35:34 +11:00
Daniel Micay
664c9af1e9 vec: avoid some unsafe code in MoveIterator's dtor 2013-12-16 08:58:41 -05:00
Huon Wilson
33b6bf4bc1 std::vec: remove aliasing &mut [] and &[] from shift_opt.
Also, dramatically simplify it with some tasteful raw pointers, rather
than treating everything as a nail with `transmute`.
2013-12-17 00:18:51 +11:00
Daniel Micay
e3b168dab3 vec: make the move iterator fast for all types
Closes #10976
2013-12-16 05:56:42 -05:00
Patrick Walton
a87786e3e9 librustc: Remove identifiers named box, since it's about to become a keyword. 2013-12-15 10:41:15 -08:00
bors
8d52dfbace auto merge of #10984 : huonw/rust/clean-raw, r=cmr
See commits for details.
2013-12-15 06:56:27 -08:00
Huon Wilson
164f7a290e std::vec: convert to(_mut)_ptr to as_... methods on &[] and &mut []. 2013-12-15 23:37:41 +11:00
Huon Wilson
f53292f7ee Move std::{str,vec}::raw::set_len to an unsafe method on Owned{Vector,Str}. 2013-12-15 23:05:30 +11:00
Huon Wilson
4f62c969f6 std::vec: move pointless raw::get and unsafe_get functions.
This can easily be written as `(*v.unsafe_ref(i)).clone()`, or just
`*v.unsafe_ref(i)` for primitive types like `i32` (the common case).
2013-12-15 23:05:00 +11:00
Huon Wilson
0393c402a6 std::vec::raw: clean up docs. 2013-12-15 22:35:08 +11:00
Huon Wilson
a43bf3ff99 std::vec::bytes: remove obsolete functions.
These are less useful versions of the comparison operators and TotalOrd
trait.
2013-12-15 22:34:56 +11:00
Huon Wilson
f97040a93b std::vec: remove unnecessary count parameter on {bytes,
raw}::copy_memory.

Slices carry their length with them, so we can just use that
information.
2013-12-15 22:23:11 +11:00
Huon Wilson
55534100ce std: fix spelling in docs. 2013-12-15 16:26:09 +11:00
Eduard Burtescu
331c6efe45 Inline Finallyalizer::drop, allowing LLVM to optimize finally.
* fixes the vec::from_elem regression caused by #8780
* added 5 benchmarks for allocating a 1KB ~[u8] and zeroing it
2013-12-12 07:07:45 +02:00
Erik Price
5731ca3078 Make 'self lifetime illegal.
Also remove all instances of 'self within the codebase.

This fixes #10889.
2013-12-11 10:54:06 -08:00
Guillaume Pinot
44fc3c6ea8 add MutableVector::mut_split(self, pred) -> DoubleEndedIterator<&mut [T]>
This method is the mutable version of ImmutableVector::split.  It is
a DoubleEndedIterator, making mut_rsplit irrelevent.  The size_hint
method is not optimal because of #9629.

At the same time, clarify *split* iterator doc.
2013-12-03 17:31:15 +01:00
Guillaume Pinot
25bb1a406c rename MutableVector::mut_split(at) to MutableVector::mut_split_at(at) 2013-12-02 08:58:07 +01:00
Palmer Cox
2a8dfc3f22 Implement DoubleEndedIterator for MutChunkIter. 2013-11-30 19:54:28 -05:00
Palmer Cox
f2a01ea277 Implement mut_chunks() method for MutableVector trait.
mut_chunks() returns an iterator that produces mutable slices. This is the
mutable version of the existing chunks() method on the ImmutableVector trait.
2013-11-30 19:07:56 -05:00
Marvin Löbel
90f9eb3b1e Removed a few macro-expanding-to-module workarounds
Also documented a few issues
2013-11-29 17:33:36 +01:00
bors
859c3baf64 auto merge of #10519 : nikomatsakis/rust/issue-8624-borrowck-overly-permissive, r=pnkfelix
See #8624 for details.

r? @pnkfelix
2013-11-28 03:51:32 -08:00
Patrick Walton
9521551b47 librustc: Fix merge fallout. 2013-11-26 11:04:39 -08:00
Patrick Walton
151b7ed52d libstd: Fix Win32 and other bustage. 2013-11-26 08:25:27 -08:00
Patrick Walton
f571e46ddb test: Remove non-procedure uses of do from compiletest, libstd tests,
compile-fail tests, run-fail tests, and run-pass tests.
2013-11-26 08:25:27 -08:00
Patrick Walton
1eca34de7d libstd: Remove all non-proc uses of do from libstd 2013-11-26 08:23:57 -08:00
Patrick Walton
9e610573ba librustc: Remove remaining uses of &fn() in favor of ||. 2013-11-26 08:20:58 -08:00
Marvin Löbel
24b316a3b9 Removed unneccessary _iter suffixes from various APIs 2013-11-26 10:02:26 +01:00
klutzy
87b166d94a std: Remove unused attributes
This also enables two tests properly.
2013-11-26 13:24:11 +09:00
Niko Matsakis
ce44094bbb Add [mut_]shift_ref/[mut_]pop_ref functions, which return a pointer to the first/last item in the slice and modify the slice to exclude the returned item. Useful when writing iterators over mutable references. 2013-11-25 06:41:26 -05:00
g3xzh
80dff18641 Add more benchmark tests to vec.rs
New benchmark tests in vec.rs:
`push`, `starts_with_same_vector`, `starts_with_single_element`,
`starts_with_diff_one_element_end`, `ends_with_same_vector`,
`ends_with_single_element`, `ends_with_diff_one_element_beginning` and
`contains_last_element`
2013-11-22 13:24:16 +02:00
Ziad Hatahet
248cb90dfa std::ptr::read_ptr now takes *T instead of *mut T
Closes #10579
2013-11-21 11:31:58 -08:00
Patrick Walton
1946265e1a libstd: Change all uses of &fn(A)->B over to |A|->B in libstd 2013-11-19 12:40:19 -08:00
Corey Richardson
a46b2b8e7a vec: with_capacity: check for overflow
Fixes #10271
2013-11-11 06:09:28 -05:00
Daniel Micay
421c631570 add clone_from and deep_clone_from
Closes #10240
2013-11-08 23:24:46 -05:00
Alex Crichton
4b770446b4 Register new snapshots 2013-11-06 20:24:36 -08:00
Niko Matsakis
3d1f3f4de0 Rename misleading contains_managed to owns_managed 2013-11-05 15:51:18 -05:00
Alex Crichton
daf5f5a4d1 Drop the '2' suffix from logging macros
Who doesn't like a massive renaming?
2013-10-22 08:09:56 -07:00