Commit Graph

17603 Commits

Author SHA1 Message Date
Patrick Walton
2c5afa4753 libcore: Add is_absolute() to paths. Closes #5851. 2013-04-22 10:31:30 -07:00
bors
aee2567eca auto merge of #6003 : thestinger/rust/cell, r=nikomatsakis
```rust
use core::cell;

fn main() {
    let x = cell::Cell(Some(~"foo"));
    let y = x.value.get_ref().get_ref();
    do x.with_mut_ref |z| { *z = None; }
    println(*y) // boom!
}
```
2013-04-22 10:15:50 -07:00
Daniel Micay
c99409b332 cell: public field is unsafe
use core::cell;

fn main() {
    let x = cell::Cell(Some(~"foo"));
    let y = x.value.get_ref().get_ref();
    do x.with_mut_ref |z| { *z = None; }
    println(*y) // boom!
}
2013-04-22 13:01:32 -04:00
bors
d0451eebc4 auto merge of #5995 : huonw/rust/core-rand-impls, r=pcwalton 2013-04-22 09:00:53 -07:00
Jed Davis
edc1324e7e Add some tests for nullable-pointer enums 2013-04-22 08:51:34 -07:00
Jed Davis
22f751f0f3 Use nullable pointers to represent enums like Option<~T>.
See comments in adt.rs for details.
2013-04-22 08:50:27 -07:00
Jed Davis
70452e5231 Consider nullability for equivalence of monomorphized fns. 2013-04-22 08:49:56 -07:00
bors
0de3e7a23c auto merge of #5994 : huonw/rust/rational-fail-message, r=thestinger
A pedantic correction; the quotient is the result of `a/b`, not `b`.
2013-04-22 06:57:54 -07:00
Seo Sanghyeon
da4bc490e6 Choose target features 2013-04-22 20:54:12 +09:00
Seo Sanghyeon
ba1f3c9b1f Convert to C string inside WriteOutputFile 2013-04-22 20:17:25 +09:00
Huon Wilson
56679024c5 libcore: Rand impls for tuples and ~/@ boxes 2013-04-22 19:01:48 +10:00
Huon Wilson
e6c4471ed8 libstd: denominator isn't quotient 2013-04-22 16:02:24 +10:00
Jed Davis
7f45ae54ea Fix LLVM bug affecting i1 switches emitted for nullable enum match. 2013-04-21 20:15:57 -07:00
Brian Anderson
d7f5e437a2 core::rt: Add the local heap to newsched tasks
Reusing the existing boxed_region implementation from the runtime
2013-04-21 19:03:54 -07:00
Brian Anderson
2fe118b26f rt: Don't make memory_region depend on rust_env
I am going to use memory_region and boxed_region as the local heap
in the new scheduler, for now at least, and I don't have a rust_env
available.
2013-04-21 17:42:45 -07:00
bors
3830040a89 auto merge of #5887 : jdm/rust/stackbounds, r=brson
This is needed to allow GC to work in SpiderMonkey.
2013-04-21 17:33:52 -07:00
Brian Anderson
f9069baa70 core::rt: Add LocalServices for thread-local language services
Things like the GC heap and unwinding are desirable everywhere the language
might be used, not just in tasks. All Rust code should have access to
LocalServices.
2013-04-21 16:28:19 -07:00
Josh Matthews
5cc6a0bf32 rt: Make the C stack segment accessible to runtime users. 2013-04-21 22:41:43 +02:00
bors
6a31525c50 auto merge of #5990 : bjz/rust/rem-quot, r=catamorphism
This renaming, proposed in the [Numeric Bikeshed](https://github.com/mozilla/rust/wiki/Bikeshed-Numeric-Traits#rename-modulo-into-rem-or-remainder-in-traits-and-docs), will allow us to implement div and and modulo methods that follow the conventional mathematical definitions for negative numbers without altering the definitions of the operators (and confusing systems programmers). Here is a useful answer on StackOverflow that explains the difference between `div`/`mod` and `quot`/`rem` in Haskell: (When is the difference between quotRem and divMod useful?)[http://stackoverflow.com/a/339823/679485].

This is part of the numeric trait reforms tracked in issue #4819.
2013-04-21 12:54:51 -07:00
bors
535244cde4 auto merge of #5987 : huonw/rust/generic-random, r=catamorphism
With this patch `rand::random` can be used to generate anything that implements `Rand`.
2013-04-21 12:00:52 -07:00
bors
8942099614 auto merge of #5989 : Thiez/rust/fixbench, r=catamorphism
Partial fix for #5985
shootout-fasta-redux.rs was calling fwrite with u64 arguments that should have been size_t, which broke on 32-bit systems. I replaced the casts to u64 by casts to size_t.

r?
2013-04-21 11:12:53 -07:00
Brendan Zabarauskas
01eb5e8ad3 Rename Div operator trait to Quot and Modulo operator trait to Rem 2013-04-22 01:58:53 +10:00
Huon Wilson
aa763cdb23 libcore: make rand::random return a generic value implementing Rand. 2013-04-21 22:14:34 +10:00
Matthijs Hofstra
91d1d00367 Changed shootout-fasta-redux to use size_t when calling fwrite, removed XFAIL 2013-04-21 13:35:43 +02:00
bors
2104cd69d4 auto merge of #5986 : brson/rust/bench, r=brson 2013-04-20 23:51:51 -07:00
Brian Anderson
59caef02ed xfail two benchmarks that are failing on the bots 2013-04-20 23:49:42 -07:00
Alex Crichton
c389d0b0dd rustc: remove unused 'mut' variables 2013-04-20 21:03:24 -04:00
Alex Crichton
fd97cac251 syntax: remove unused 'mut' variables 2013-04-20 21:03:24 -04:00
Alex Crichton
7d317fe7e5 std: remove unused 'mut' variables 2013-04-20 21:03:24 -04:00
Alex Crichton
13537d2e0c core: remove unused 'mut' variables 2013-04-20 21:02:38 -04:00
Alex Crichton
d1985c9dd0 Implement a lint mode to deal with unused 'mut' variables 2013-04-20 21:02:38 -04:00
Brian Anderson
4eff3130c5 core::rt:: Implement Reader/Writer for MemReader/MemWriter 2013-04-20 17:25:00 -07:00
Brian Anderson
fa478f5775 core: Speed up a test case 2013-04-20 16:15:32 -07:00
Brian Anderson
00474c13f3 core: Ignore two long-running tests 2013-04-20 16:15:06 -07:00
Brian Anderson
d818ea8154 core::rt: Listener constructors are called and return a 2013-04-20 15:55:37 -07:00
Brian Anderson
bcb3cfb8ce core::rt: Improve docs for run_in_newsched_task testing function 2013-04-20 15:55:07 -07:00
Brian Anderson
6e17202ff4 core::rt: Add next_test_ip4 for generating test addresses 2013-04-20 14:50:06 -07:00
bors
0e017ab4e0 auto merge of #5979 : Thiez/rust/no_reinterpret_cast, r=catamorphism
As the name suggests this replaces many instances of cast::reinterpret_cast by cast::transmute. It's essentially the boring part of fixing #5163, the remaining reinterpret_casts should be more tricky to remove (unless I missed a boring case).

r? @catamorphism
2013-04-20 14:24:51 -07:00
Marvin Löbel
df61ec2da6 Corrected history 2013-04-20 22:54:13 +02:00
Marvin Löbel
7ca216d750 Added case functions to Ascii 2013-04-20 22:51:55 +02:00
Marvin Löbel
61ffee738d Added Ascii type 2013-04-20 22:51:55 +02:00
Marvin Löbel
4357cbf2fa Made unsafely safe functions unsafe again, for safety 2013-04-20 22:51:55 +02:00
Marvin Löbel
276293af7c Cleaned up case related functions a bit 2013-04-20 22:51:55 +02:00
bors
f0afe23dce auto merge of #5978 : alexcrichton/rust/issue-5954, r=catamorphism
Closes #5954
2013-04-20 13:33:51 -07:00
Matthijs Hofstra
51a68eb9b1 Replaced many instances of reinterpret_cast with transmute 2013-04-20 22:05:50 +02:00
Alex Crichton
3c2a44b60f Don't warn about unsafe functions which don't need to be unsafe 2013-04-20 15:52:05 -04:00
bors
ae3b8690c1 auto merge of #5975 : huonw/rust/rustc-intrinsics-fixed-stack, r=pcwalton
This implements the fixed_stack_segment for items with the rust-intrinsic abi, and then uses it to make f32 and f64 use intrinsics where appropriate, but without overflowing stacks and killing canaries (cf. #5686 and #5697). Hopefully.

@pcwalton, the fixed_stack_segment implementation involved mirroring its implementation in `base.rs` in `trans_closure`, but without adding the `set_no_inline` (reasoning: that would defeat the purpose of intrinsics), which is possibly incorrect.

I'm a little hazy about how the underlying structure works, so I've annotated the 4 that have caused problems so far, but there's no guarantee that the other intrinsics are entirely well-behaved.

Anyway, it has good results (the following are just summing the result of each function for 1 up to 100 million):

```
$ ./intrinsics-perf.sh f32
func   new   old   speedup
sin    0.80  2.75  3.44
cos    0.80  2.76  3.45
sqrt   0.56  2.73  4.88
ln     1.01  2.94  2.91
log10  0.97  2.90  2.99
log2   1.01  2.95  2.92
exp    0.90  2.85  3.17
exp2   0.92  2.87  3.12
pow    6.95  8.57  1.23

   geometric mean: 2.97

$ ./intrinsics-perf.sh f64
func   new   old   speedup
sin    12.08  14.06  1.16
cos    12.04  13.67  1.14
sqrt   0.49  2.73  5.57
ln     4.11  5.59  1.36
log10  5.09  6.54  1.28
log2   2.78  5.10  1.83
exp    2.00  3.97  1.99
exp2   1.71  3.71  2.17
pow    5.90  7.51  1.27

   geometric mean: 1.72
```

So about 3x faster on average for f32, and 1.7x for f64. This isn't exactly apples to apples though, since this patch also adds #[inline(always)] to all the function definitions too, which possibly gives a speedup.

(fwiw, GitHub is showing 93c0888 after d9c54f8 (since I cherry-picked the latter from #5697), but git's order is the other way.)
2013-04-20 11:57:50 -07:00
Huon Wilson
c5baeb1db3 testsuite: update tests to not use math intrinsics directly 2013-04-21 01:40:48 +10:00
Huon Wilson
d9c54f8387 librustc: use LLVM intrinsics for several floating point operations.
Achieves at least 5x speed up for some functions!

Also, reorganise the delegation code so that the delegated function wrappers
have the #[inline(always)] annotation, and reduce the repetition of
delegate!(..).
2013-04-21 01:40:48 +10:00
Huon Wilson
93c0888b6c librustc: implement and use fixed_stack_segment attribute for intrinsics. 2013-04-21 01:40:48 +10:00