diff options
| author | Daniel Micay <danielmicay@gmail.com> | 2013-07-30 00:33:52 -0400 |
|---|---|---|
| committer | Daniel Micay <danielmicay@gmail.com> | 2013-07-30 02:50:31 -0400 |
| commit | ef870d37a58df136b18f1440f45d4f0102c55c1a (patch) | |
| tree | 3f30f5d551a247978a6fc1a6af602126ed518121 /src/libstd/rt/stack.rs | |
| parent | e94e4d51ca01db908748ab79bafe3254bede645b (diff) | |
| download | rust-ef870d37a58df136b18f1440f45d4f0102c55c1a.tar.gz rust-ef870d37a58df136b18f1440f45d4f0102c55c1a.zip | |
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)
Diffstat (limited to 'src/libstd/rt/stack.rs')
| -rw-r--r-- | src/libstd/rt/stack.rs | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/libstd/rt/stack.rs b/src/libstd/rt/stack.rs index fbb516b2df4..a1269968921 100644 --- a/src/libstd/rt/stack.rs +++ b/src/libstd/rt/stack.rs @@ -44,7 +44,7 @@ impl StackSegment { /// Point one word beyond the high end of the allocated stack pub fn end(&self) -> *uint { - vec::raw::to_ptr(self.buf).offset(self.buf.len()) as *uint + vec::raw::to_ptr(self.buf).offset(self.buf.len() as int) as *uint } } |
