edef
bb2b92bf6b
remove feature attributes for stable stuff
2016-03-16 00:14:09 +01:00
edef
bc46941e89
use libvalgrind instead of valgrind.h
...
no more C!
2016-01-04 15:34:41 +01:00
edef
cd4fe1ecc8
remove obsolete support for Rust stack limits
...
rustc removed these in 7a3fdfbf674a08b7f6fd32c9124e52924a2f9a1c, and
this removes a Linux-specific TLS slot from our code.
2016-01-04 03:46:07 +01:00
John Ericson
a1f286bdaf
don't drop uninitialised memory when pushing to stack
2015-08-26 20:42:33 +02:00
John Ericson
96a31d2443
remove stray import
2015-08-26 20:41:12 +02:00
John Ericson
878a6fefc3
simplify Valgrind wrapper
2015-08-26 00:51:19 +02:00
John Ericson
5411f10460
use Void to ensure closure diverges
2015-08-26 00:51:18 +02:00
edef
c83143511e
core::atomic -> core::sync::atomic
2015-08-26 00:20:23 +02:00
edef
e290a8bbaf
remove `extern crate core` and prelude imports
...
the latest Rust nightly makes this unnecessary
2015-08-26 00:19:53 +02:00
edef
189edae3cf
add #![feature(core_prelude)]
2015-07-20 20:54:41 -04:00
edef
6d1c5d0df1
it's fine to inline a simple FFI call
2015-04-27 17:19:13 +02:00
edef
2736479db0
fix license header
2015-04-23 01:24:58 +02:00
edef
3f0ec83bf3
remove valgrind_stack_change
...
This is a leftover from when we exposed these APIs to consumers, we
don't actually use this function.
2015-04-23 01:24:04 +02:00
edef
d0ee592ba1
use the libc crate from cargo
2015-04-23 01:14:01 +02:00
edef
418c53797e
x86 support
...
ref #1
2015-04-16 13:15:46 -04:00
edef
52325b07c0
comment fix: it's 8ns *faster*
2015-04-16 12:21:39 -04:00
edef
a1e4c2b745
add Syntastic ASM lint hints
2015-04-16 11:56:45 -04:00
edef
0bebfae21d
more docs!
2015-04-16 10:15:00 -04:00
edef
d627f0d725
big rename — we're libfringe now
2015-04-16 08:11:12 -04:00
edef
af7e9ea67c
add FreeBSD + DragonFlyBSD MAP_STACK workaround
...
http://lists.freebsd.org/pipermail/freebsd-bugs/2011-July/044840.html
according to libgreen, DragonFlyBSD suffers from this too
2015-04-16 07:59:59 -04:00
edef
68f70fb1c9
rename Context::destroy to Context::unwrap, in line with lang conventions
2015-04-16 07:49:13 -04:00
edef
01e57ce9f5
let os::Stack's docs shine through the facade
2015-04-16 07:47:23 -04:00
edef
2266da2f8d
rejig lib.rs a little
2015-04-16 07:45:14 -04:00
edef
fe490275fa
move os::Stack behind the facade, to OsStack
2015-04-16 07:44:07 -04:00
edef
ff25697444
remove StackSource
...
Nothing in this library took StackSources, and it's probably too
high-level a concept to include here. Maybe later.
2015-04-16 07:42:16 -04:00
edef
bdb6e0bd8b
let StackSource::get_stack take &mut self
2015-04-16 07:35:29 -04:00
edef
9bb0ce483d
derive Copy and Clone for os::StackSource
2015-04-16 07:33:27 -04:00
edef
a389576d0f
document os
2015-04-16 07:30:53 -04:00
edef
f3ee07416d
require Stack::Error to implement Debug + Display
2015-04-16 07:27:14 -04:00
edef
cbfb62e62f
only expose context and stack through the facade
...
It's fairly pointless to have submodules when there are only three
items.
2015-04-16 07:25:05 -04:00
edef
0dd6c8bc32
pass STACK_ALIGN through without exposing it
2015-04-16 07:24:15 -04:00
edef
7adb9e7381
implement Debug for all components of Context
2015-04-16 07:24:07 -04:00
edef
519d86ca4c
implement Send where applicable
2015-04-16 07:23:57 -04:00
edef
7271fe1724
there is no point in Registers being Copy + Clone
2015-04-16 07:23:56 -04:00
edef
222ab0eaa9
make Context::destroy inlineable
2015-04-16 06:43:09 -04:00
edef
6f750ab484
move all OS-related code into src/os
2015-04-16 06:42:31 -04:00
edef
f7ab28de4b
move all the common arch stuff into a module of its own
2015-04-16 06:34:03 -04:00
edef
b7624aa49a
uintptr_t is pointless when usize is the same anyway
2015-04-16 06:20:46 -04:00
edef
997a4a7765
move architecture specifics into arch directory
2015-04-16 06:17:03 -04:00
edef
f24e8e7911
add license headers to every file
2015-04-16 06:08:44 -04:00
edef
cbc10fd311
cache page_size
...
page_size is used in every nearly every pointer calculation in os.rs,
and the Stack methods are called fairly often. It's definitely not worth
spilling registers for to call out to a libc function.
With this change, page_size becomes effectively free. It is cached in an
atomic usize, with relaxed ordering, so no actual atomic operations are
involved.
Benchmark:
```
test bench_page_size ... bench: 5 ns/iter (+/- 1)
test bench_page_size_cached ... bench: 0 ns/iter (+/- 0)
```
2015-04-16 05:52:56 -04:00
edef
52c0c92cd8
move OS specifics into sys
2015-04-16 05:49:34 -04:00
edef
2c3a203f57
rearrange the os::{Stack, StackSource} code a little
2015-04-16 05:34:09 -04:00
edef
8dd3044da5
don't re-export os::unix internals
2015-04-16 05:34:09 -04:00
edef
cf33440503
include valgrind.h, so we don't depend on Valgrind at build time
2015-04-16 04:32:56 -04:00
edef
b8211689fa
return a Result from StackSource::get_stack with an associated Error
...
fix #7
2015-04-16 04:14:18 -04:00
edef
42db0ee5b1
loosen the lifetime bounds on Context
...
fix #6
ref #3
2015-04-16 04:01:02 -04:00
edef
195350863a
make Valgrind optional
2015-04-16 03:22:57 -04:00
edef
2760a0a7aa
move Valgrind handling into Context
...
fix #3
This takes all Valgrind functionality private again.
Valgrind stack registrations are now associated with a Context, not with
a Stack. This makes sense, since it's only actually a stack when a
Context is running on it. Perhaps Valgrind will even be able to detect
early stack frees now.
2015-04-16 02:59:58 -04:00
edef
a04117f955
use Display for displaying IoErrors
2015-04-16 02:16:08 -04:00