Niko Matsakis
3d1f3f4de0
Rename misleading contains_managed to owns_managed
2013-11-05 15:51:18 -05:00
bors
1c56652640
auto merge of #10064 : luqmana/rust/vvv, r=nikomatsakis
...
Fixes #2057 .
Example:
```Rust
#[no_std];
type c_char = u8;
type c_int = i32;
type size_t = uint;
extern {
fn printf(format: *c_char, ...) -> c_int;
}
#[lang="fail_bounds_check"]
fn fail_bounds_check(_: *c_char, _: size_t, _: size_t, _: size_t) {}
#[start]
#[fixed_stack_segment]
fn main(_: int, _: **u8) -> int {
unsafe {
let msg = bytes!("Hello World!
2013-11-04 21:02:07 -08:00
Luqman Aden
c669ccf3d3
libsyntax/librustc: Allow calling variadic foreign functions.
2013-11-04 23:53:11 -05:00
bors
4b04395c11
auto merge of #10182 : alexcrichton/rust/typeid-intrinsic, r=nikomatsakis
...
This isn't quite as fancy as the struct in #9913 , but I'm not sure we should be exposing crate names/hashes of the types. That being said, it'd be pretty easy to extend this (the deterministic hashing regardless of what crate you're in was the hard part).
2013-11-04 19:21:50 -08:00
Daniel Micay
67966fa9de
simplify memcpy/memmove/memset intrinsics
...
This moves the per-architecture difference into the compiler.
2013-11-03 20:31:57 -05:00
Alex Crichton
9df164c145
Register new snapshots
...
Closes #2240
2013-11-01 16:51:33 -07:00
Alex Crichton
61637439dc
Add a type_id intrinsic
...
Closes #9913
2013-11-01 10:31:33 -07:00
Jed Davis
fcfbfde0b7
Adjust reflection for the possibility of discriminants larger than int.
...
Not only can discriminants be smaller than int now, but they can be
larger than int on 32-bit targets. This has obvious implications for the
reflection interface. Without this change, things fail with LLVM
assertions when we try to "extend" i64 to i32.
2013-10-29 09:09:20 -07:00
Daniel Micay
142672dca4
register snapshots
2013-10-23 18:06:12 -04:00
reedlepee
ad465441ba
Removed Unnecessary comments and white spaces #4386
2013-10-23 01:10:50 +05:30
reedlepee
0ada7c7ffe
Making fields in std and extra : private #4386
2013-10-23 01:10:50 +05:30
bors
ece5028a8b
auto merge of #10000 : cmr/rust/snapshot, r=alexcrichton
2013-10-21 13:11:37 -07:00
Corey Richardson
1122d6ab4a
Register snapshots
2013-10-21 14:43:11 -04:00
Daniel Micay
462a28d003
fix the new floating point intrinsics
2013-10-21 14:26:07 -04:00
Daniel Micay
4533432612
expose new floating point intrinsics
...
copysign, ring, nearbyint, round
2013-10-21 04:17:03 -04:00
Alex Crichton
0adb41d0eb
Register new snapshots
2013-10-17 10:12:23 -07:00
Chris Sainty
88ab38cf06
Removed the -Z once_fns compiler flag and added the new feature directive of the same name to replace it.
...
Changed the frame_address intrinsic to no longer be a once fn.
This removes the dependency on once_fns from std.
2013-10-17 06:22:48 +02:00
Daniel Micay
45e2cf39a2
add an abort
intrinsic
...
This should be preferred to the libc `abort` function.
2013-10-14 22:45:43 -04:00
Steve Klabnik
16fc6a694c
Remove unused abi attributes.
...
They've been replaced by putting the name on the extern block.
#[abi = "foo"]
goes to
extern "foo" { }
Closes #9483 .
2013-10-14 13:10:36 +02:00
Alex Crichton
4cc925a5f4
Register new snapshots
...
Now that #9662 is merged, we should be much more easily bootstrappable on
windows now.
2013-10-04 11:24:18 -07:00
Daniel Micay
c9d4ad07c4
remove the float
type
...
It is simply defined as `f64` across every platform right now.
A use case hasn't been presented for a `float` type defined as the
highest precision floating point type implemented in hardware on the
platform. Performance-wise, using the smallest precision correct for the
use case greatly saves on cache space and allows for fitting more
numbers into SSE/AVX registers.
If there was a use case, this could be implemented as simply a type
alias or a struct thanks to `#[cfg(...)]`.
Closes #6592
The mailing list thread, for reference:
https://mail.mozilla.org/pipermail/rust-dev/2013-July/004632.html
2013-10-01 14:54:10 -04:00
Alex Crichton
817576ee70
Register new snapshots
2013-09-18 11:07:22 -07:00
Daniel Micay
09ad0cd362
add type name to the tydesc
...
Closes #8926
2013-09-03 04:44:47 -04:00
Daniel Micay
331d2d6d31
repr: handle tuple structs sanely
...
Closes #8919
2013-09-02 04:10:56 -04:00
Daniel Micay
cc1f0027c7
repr: add support for trait objects
...
Closes #8916
2013-09-02 02:50:14 -04:00
Daniel Micay
874611b348
repr: print the name of structs
2013-08-31 03:54:13 -04:00
bors
f94844c558
auto merge of #8820 : alexcrichton/rust/no-io-writer, r=brson
...
At the same time, this updates the TyVisitor to use a mutable self because it's
probably going to be mutating state as it goes along anyway.
2013-08-30 01:20:44 -07:00
Alex Crichton
97f61e7bbe
Remove @io::Writer from sys/repr/reflect
...
At the same time, this updates the TyVisitor to use a mutable self because it's
probably going to be mutating state as it goes along anyway.
2013-08-28 23:00:46 -07:00
Alex Crichton
e3662b1880
Remove offset_inbounds for an unsafe offset function
2013-08-27 23:22:52 -07:00
Daniel Micay
803f941867
reflect: rm unused visit_{var,var_integral,constr}
2013-08-27 16:31:48 -04:00
Huon Wilson
abe94f9b4d
doc: correct spelling in documentation.
2013-08-16 15:41:28 +10:00
Daniel Micay
0cb0ef2ca5
fix build with the new snapshot compiler
2013-08-12 17:37:46 -04:00
bors
b285f1e6c9
auto merge of #8455 : nikomatsakis/rust/issue-5762-objects-dralston-d, r=graydon
...
Fix #5762 and various other aspects of object invocation.
r? @graydon
2013-08-11 14:17:09 -07:00
Niko Matsakis
df016dc4bf
Update type visitor to use &Visitor and not @Visitor
2013-08-11 14:01:23 -04:00
Niko Matsakis
6fe59bf877
Add a field borrow_offset
to the type descriptor indicating
...
what amount a T* pointer must be adjusted to reach the contents
of the box. For `~T` types, this requires knowing the type `T`,
which is not known in the case of objects.
2013-08-11 13:59:45 -04:00
Daniel Micay
076b91f8ad
add intrinsics for checked overflow add/sub/mul
2013-08-11 02:51:20 -04:00
Daniel Micay
7d115c9420
add an intrinsic for inbounds GEP
2013-08-06 23:41:20 -04:00
Daniel Micay
9f74217d80
register snapshots
2013-08-03 21:09:28 -04:00
Patrick Walton
9457ebee55
librustc: Disallow "unsafe" for external functions
2013-08-02 21:57:59 -07:00
Daniel Micay
ef870d37a5
implement pointer arithmetic with GEP
...
Closes #8118 , #7136
~~~rust
extern mod extra;
use std::vec;
use std::ptr;
fn bench_from_elem(b: &mut extra::test::BenchHarness) {
do b.iter {
let v: ~[u8] = vec::from_elem(1024, 0u8);
}
}
fn bench_set_memory(b: &mut extra::test::BenchHarness) {
do b.iter {
let mut v: ~[u8] = vec::with_capacity(1024);
unsafe {
let vp = vec::raw::to_mut_ptr(v);
ptr::set_memory(vp, 0, 1024);
vec::raw::set_len(&mut v, 1024);
}
}
}
fn bench_vec_repeat(b: &mut extra::test::BenchHarness) {
do b.iter {
let v: ~[u8] = ~[0u8, ..1024];
}
}
~~~
Before:
test bench_from_elem ... bench: 415 ns/iter (+/- 17)
test bench_set_memory ... bench: 85 ns/iter (+/- 4)
test bench_vec_repeat ... bench: 83 ns/iter (+/- 3)
After:
test bench_from_elem ... bench: 84 ns/iter (+/- 2)
test bench_set_memory ... bench: 84 ns/iter (+/- 5)
test bench_vec_repeat ... bench: 84 ns/iter (+/- 3)
2013-07-30 02:50:31 -04:00
James Miller
4a1a0fbed5
Add an atomic fence intrinsic
2013-07-28 20:26:49 +12:00
Daniel Micay
ed67cdb73c
new snapshot
2013-07-22 01:09:48 -04:00
Patrick Walton
06594ed96b
librustc: Remove pub extern
and priv extern
from the language.
...
Place `pub` or `priv` on individual items instead.
2013-07-20 17:39:38 -07:00
Daniel Micay
0239a06a64
rm unused visit_str method from TyVisitor
2013-07-17 13:30:32 -04:00
Daniel Micay
e118555ce6
remove headers from unique vectors
2013-07-15 23:57:27 -04:00
Daniel Micay
90f1db10fa
remove headers from exchange allocations
2013-07-08 04:54:41 -04:00
bors
3e933b199c
auto merge of #7194 : jensnockert/rust/endian, r=cmr
...
They simply byte-swap an integer to a specific endian, like the hton* functions in C.
These intrinsics are synthesized, so maybe they should be in another file. But since they are just a single line of code each, based on the bswap intrinsics and aren't really intended for public consumption I thought they would fit in the intrinsics file.
The next step working on this could be to expose a trait / generic function for byteswapping.
2013-07-06 08:32:10 -07:00
Daniel Micay
b91416214e
add a contains_managed intrinsic
2013-06-30 03:45:39 -04:00
bors
7aee5da08d
auto merge of #7254 : Blei/rust/intrinsic-overhaul, r=cmr
...
This sets the `get_tydesc()` return type correctly and removes the intrinsic module. See #3730 , #3475 .
Update: this now also removes the unused shape fields in tydescs.
2013-06-25 04:38:06 -07:00
James Miller
caa50ce15d
Remove stage0 cfgs
2013-06-25 17:08:26 +12:00