Commit Graph

42179 Commits

Author SHA1 Message Date
Alex Crichton
8daf961a63 rollup merge of #24881: chris-morgan/issue-24872
Fixes #24872.
2015-04-29 15:45:41 -07:00
Alex Crichton
a24e036126 rollup merge of #24871: mbrubeck/doc-edit
r? @steveklabnik
2015-04-29 15:45:40 -07:00
Alex Crichton
18a0269d9d rollup merge of #24870: tshepang/reference-fix-brackets
Also, remove the other brackets, because they make the whole sentence look awkward.
2015-04-29 15:45:39 -07:00
Alex Crichton
256023a284 rollup merge of #24862: barometz/intro-push-err-fix
The error in the Brief Introduction shows the problematic line as "x.push(4)", while the example code uses a vector of strings.
2015-04-29 15:45:38 -07:00
Alex Crichton
41ee6df261 rollup merge of #24846: dotdash/fast_cttz8
Currently, LLVM lowers a cttz8 on x86_64 to these instructions:

```asm
    movzbl      %dil, %eax
    bsfl        %eax, %eax
    movl        $32, %ecx
    cmovnel     %eax, %ecx
    cmpl        $32, %ecx
    movl        $8, %eax
    cmovnel     %ecx, %eax
```

To improve the codegen, we can zero extend the 8 bit integer, then set
bit 8 and perform a cttz operation on the extended value. That way
there's no conditional operation involved at all.

This was discovered by  this benchmark: https://github.com/Kimundi/long_strings_without_repeats

Timings on my box with the current nightly:
```
running 4 tests
test bench_cpp_naive_big     ... bench:   5479222 ns/iter (+/- 254222)
test bench_noop_big          ... bench:    571405 ns/iter (+/- 111950)
test bench_rust_naive_big    ... bench:   7798102 ns/iter (+/- 148841)
test bench_rust_unsafe_big   ... bench:   6606488 ns/iter (+/- 67529)
```

Timings with the patch applied:
```
running 4 tests
test bench_cpp_naive_big     ... bench:   5470944 ns/iter (+/- 7109)
test bench_noop_big          ... bench:    568944 ns/iter (+/- 6895)
test bench_rust_naive_big    ... bench:   6795901 ns/iter (+/- 43806)
test bench_rust_unsafe_big   ... bench:   5584879 ns/iter (+/- 5291)
```
2015-04-29 15:45:37 -07:00
Alex Crichton
dfb60802c5 rollup merge of #24833: tari/rfc888
Closes #24118, implementing RFC 888.
2015-04-29 15:45:36 -07:00
Alex Crichton
3434469b51 rollup merge of #24762: nrc/mod-debug-2
Closes #20780

r? @michaelwoerister

I'm sure this could be done better with deeper knowledge of debuginfo, but this seems like a good start.
2015-04-29 15:45:35 -07:00
Alex Crichton
e14af089a4 rollup merge of #24711: alexcrichton/fs2.1
This commit is an implementation of [RFC 1044][rfc] which adds additional
surface area to the `std::fs` module. All new APIs are `#[unstable]` behind
assorted feature names for each one.

[rfc]: https://github.com/rust-lang/rfcs/pull/1044

The new APIs added are:

* `fs::canonicalize` - bindings to `realpath` on unix and
  `GetFinalPathNameByHandle` on windows.
* `fs::symlink_metadata` - similar to `lstat` on unix
* `fs::FileType` and accessor methods as `is_{file,dir,symlink}`
* `fs::Metadata::file_type` - accessor for the raw file type
* `fs::DirEntry::metadata` - acquisition of metadata which is free on Windows
  but requires a syscall on unix.
* `fs::DirEntry::file_type` - access the file type which may not require a
  syscall on most platforms.
* `fs::DirEntry::file_name` - access just the file name without leading
  components.
* `fs::PathExt::symlink_metadata` - convenience method for the top-level
  function.
* `fs::PathExt::canonicalize` - convenience method for the top-level
  function.
* `fs::PathExt::read_link` - convenience method for the top-level
  function.
* `fs::PathExt::read_dir` - convenience method for the top-level
  function.
* `std::os::raw` - type definitions for raw OS/C types available on all
  platforms.
* `std::os::$platform` - new modules have been added for all currently supported
  platforms (e.g. those more specific than just `unix`).
* `std::os::$platform::raw` - platform-specific type definitions. These modules
  are populated with the bare essentials necessary for lowing I/O types into
  their raw representations, and currently largely consist of the `stat`
  definition for unix platforms.

This commit also deprecates `Metadata::{modified, accessed}` in favor of
inspecting the raw representations via the lowering methods of `Metadata`.

Closes https://github.com/rust-lang/rust/issues/24796
2015-04-29 15:45:34 -07:00
Alex Crichton
b164f66172 rollup merge of #24610: nagisa/offset-docs 2015-04-29 15:45:34 -07:00
tynopex
3abba10e4f Update process.rs
Make whitespace consistent
2015-04-29 18:21:23 -04:00
Tamir Duberstein
8cdfc8feaf Re-enable tests on Android
Addresses part of #10381.
2015-04-29 14:34:45 -07:00
Tamir Duberstein
97fe4e6331 Re-enable test on Android
Closes #9116.
2015-04-29 14:34:45 -07:00
Tamir Duberstein
0270189057 Reference the correct issue
The problem here is that this test doesn't even compile for Android.

See #24958.
2015-04-29 14:34:44 -07:00
Nick Hamann
2baeabddd9 Improve libstd/net/addr.rs documentation.
This adds some missing punctuation and converts uses of "Gets" to
"Returns". This sounds better to my ear, but more importantly is
more consistent with the documentation from other files.
2015-04-29 16:24:44 -05:00
Nick Hamann
a237ceb030 Add some missing punctuation in the libstd/net/tcp.rs docs. 2015-04-29 16:21:39 -05:00
Nick Hamann
e2d770a398 Add some missing punctuation in the libstd/net/ip.rs docs. 2015-04-29 16:19:35 -05:00
Felix S. Klock II
2e23d8196e tests for lint that warns about mixing #[repr(C)] with Drop.
THis includes tests for struct and enum. (I suspect the closure case
is actually unreachable, but i see no harm in including it.)
2015-04-29 23:05:21 +02:00
Felix S. Klock II
78130a4690 lint for mixing #[repr(C)] with an impl of Drop. 2015-04-29 23:05:09 +02:00
tynopex
cf053d72a0 std: Fixup docs for std::process 2015-04-29 17:00:10 -04:00
Nick Hamann
42196ae7bf Improve libstd/net/udp.rs documentation.
This adds some missing punctuation, adds a missing word, and
corrects a bug in the description of `send_to`, which actually
returns the number of bytes written on success.

Fixes #24925.
2015-04-29 15:59:28 -05:00
Tamir Duberstein
9f36ec0d42 Use PIE on Android
This is OK to do given:
  - PIE is supported on Android starting with API 16.
  - The bots are running API 18.
  - API < 16 now has a 12.5% market share[0] as of 2015-04-29.

Unfortunately, this breaks backtrace support. See #17520.

Closes #17437.

[0] https://developer.android.com/about/dashboards/index.html
2015-04-29 13:50:26 -07:00
Peter Marheine
94c9bdeef6 Update SNAPs to latest snapshot. 2015-04-29 13:11:31 -06:00
Tamir Duberstein
7e2b09351d DRY Android targets 2015-04-29 11:15:27 -07:00
Felix S. Klock II
db3a58ae29 Add -g that I should have included in PR #24932.
Note it is safe, with respect to autobuilds, to land before #24945.

(In other words, landing this sooner won't break things for anyone any
worse than they were already broken, since there are *other* tests
that also add `-g` to their flags via `compile-flags: -g`.)
2015-04-29 18:58:42 +02:00
Felix S. Klock II
df82df8cf8 Unit test ensuring we accept repeated -g and -O. 2015-04-29 18:56:16 +02:00
Felix S. Klock II
2007169583 Allow -g and -O options to be specified multiple times at command line. 2015-04-29 18:56:10 +02:00
Tamir Duberstein
8c58fe1739 Fallout 2015-04-29 08:55:31 -07:00
Tamir Duberstein
9504d8cdae bitflags! uses associated constants 2015-04-29 08:55:30 -07:00
Tamir Duberstein
0c0d138739 bitflags! is no longer used in std 2015-04-29 08:55:30 -07:00
Felix S. Klock II
bd4b984537 add --enable-debuginfo-tests, analogous to --disable-optimize-tests.
Then, decouple the question of whether the compiler/stdlib carry
debuginfo (which is controlled via `--enable-debuginfo` and implied by
`--enable-debug`) from the question of whether the tests carry
debuginfo (which now no longer is implied by `--enable-debug` nor
`--enable-debuginfo`, and is off by default).
2015-04-29 17:18:44 +02:00
Alex Crichton
c1149edf7a std: Fix inheriting standard handles on windows
Currently if a standard I/O handle is set to inherited on Windows, no action is
taken and the slot in the process information description is set to
`INVALID_HANDLE_VALUE`. Due to our passing of `STARTF_USESTDHANDLES`, however,
this means that the handle is actually set to nothing and if a child tries to
print it will generate an error.

This commit fixes this behavior by explicitly creating stdio handles to be
placed in these slots by duplicating the current process's I/O handles. This is
presumably what previously happened silently by using a file-descriptor-based
implementation instead of a `HANDLE`-centric implementation.

Along the way this cleans up a lot of code in `Process::spawn` for Windows by
ensuring destructors are always run, using more RAII, and limiting the scope of
`unsafe` wherever possible.
2015-04-29 08:01:16 -07:00
Björn Steinbrink
36dccec2f3 Currently, LLVM lowers a cttz8 on x86_64 to these instructions:
```asm
    movzbl      %dil, %eax
    bsfl        %eax, %eax
    movl        $32, %ecx
    cmovnel     %eax, %ecx
    cmpl        $32, %ecx
    movl        $8, %eax
    cmovnel     %ecx, %eax
```

which has some unnecessary overhead, having two conditional moves.

To improve the codegen, we can zero extend the 8 bit integer, then set
bit 8 and perform a cttz operation on the extended value. That way
there's no conditional operation involved at all.
2015-04-29 14:45:23 +02:00
bors
551a74dddd Auto merge of #24932 - pnkfelix:fix-issue-24687, r=huonw
metdata: Fix zero-normalization of the pos of a `MultiByteChar`

Fix #24687

The source byte/character mappings for every crate track the collection of multi-characters from its source files specially.  When we import the source information for another file into the current compilation unit, we assign its byte-positions unique values by shifting them all by a fixed adjustment, tracked in the `start_pos` field.  But when we pull out the source span information for one function from one crate and into our own crate, we need to re-normalize the byte positions: subtracting the old `start_pos` and adding the new `start_pos`. The `new_imported_filemap(..)` method handles adding the new `start_pos`, so all `creader` needs to do is re-normalize each `pos` to zero.

It seems like it was indeed trying to do this, but it mistakenly added the old `start_pos` instead of subtracting it.
2015-04-29 10:40:03 +00:00
Oliver Schneider
d6043d1e71 fix broken link
compiler plugins are hosted unter "compiler-plugins.html" not "plugins.html"
2015-04-29 11:41:00 +02:00
Felix S. Klock II
2ae82fcd95 Regression test for issue 24687.
use visible characters for the multibyte character filler.
2015-04-29 10:53:09 +02:00
jooert
f99658d7c7 Adapt benchmark tests to unit test guidelines
Since #24783, the style guidelines recommend that unit tests should live in a submodule `tests` rather than `test` to not clash with the possible use of libtest. This is especially important for benchmark tests as they require libtest. Fixes #24923.
2015-04-29 10:36:43 +02:00
Felix S. Klock II
ecd3572f49 Fix zero-normalization of the pos of a MultiByteChar.
Fix #24687
2015-04-29 10:21:29 +02:00
bors
26c7635ccf Auto merge of #24893 - robinst:issue-24407-E0013, r=nrc
Part of #24407.
2015-04-29 07:37:58 +00:00
Nick Cameron
de2a4c0113 save-analysis: fix impl functions 2015-04-29 19:21:18 +12:00
Nick Cameron
7bfb5ed826 Reviewer changes 2015-04-29 18:56:13 +12:00
Nick Cameron
bb26aadaf3 Tidy up 2015-04-29 17:26:22 +12:00
Nick Cameron
88f840bdea debuginfo: extract adt.rs 2015-04-29 17:26:22 +12:00
Nick Cameron
9756349d11 debuginfo: extract metadata.rs 2015-04-29 17:26:22 +12:00
Nick Cameron
024e86fad5 debuginfo: extract types.rs 2015-04-29 17:26:22 +12:00
Nick Cameron
488694cf0d debuginfo: extract namespace.rs 2015-04-29 17:26:22 +12:00
Nick Cameron
5b53de1775 debuginfo: extract create.rs 2015-04-29 17:26:22 +12:00
Nick Cameron
a015547894 debuginfo: extract utils.rs 2015-04-29 17:26:22 +12:00
Nick Cameron
5753c8d6ca debuginfo: extract gdb.rs 2015-04-29 17:23:36 +12:00
Nick Cameron
5993ae86b8 debuginfo: pull out docs 2015-04-29 17:23:36 +12:00
Nick Cameron
39e2e649cb Tidy up word-wrapping in debuginfo 2015-04-29 17:23:36 +12:00