whitequark
892a7696ec
Allow unwinding to propagate across a context swap.
...
The main purpose of this is having nice backtraces in gdb, although
it also slightly simplifies poisoning state of the API consumers
after a panic.
2016-08-13 13:38:04 +02:00
whitequark
40fbfdde0c
Kill impl StackPointer.
...
That was a silly idea for a silly abstraction, and it brought no
improvement, only confusion. So, revert it.
2016-08-13 13:38:04 +02:00
edef
244db8490b
Remove the badge for Windows CI too
2016-08-13 12:54:33 +02:00
edef
375fd03a16
Get rid of Windows CI (Appveyor)
2016-08-13 12:52:37 +02:00
edef
bb699c0f6e
Allow inlining Generator::state
2016-08-13 12:52:12 +02:00
edef
375846bda5
Rewrite the FPE test to not use Context directly
2016-08-09 16:00:17 +02:00
edef
890e95b8a4
add Travis CI IRC notifications [skip ci]
2016-07-17 20:25:44 -04:00
edef
f44936f957
appveyor: generate a zip of target/
2016-07-17 17:16:19 -04:00
edef
8c761d944f
Fix Windows x64 ABI
2016-07-17 16:57:23 -04:00
edef
42f37c967e
label the Travis/AppVeyor badges [skip ci]
2016-07-17 16:12:45 -04:00
edef
343108a3ae
add AppVeyor badge [skip ci]
2016-07-17 16:11:02 -04:00
edef
3f8ed5b460
add appveyor.yml
2016-07-17 16:04:22 -04:00
edef
4f7ab38530
Remove copyright year
...
They're legally meaningless.
2016-07-17 14:12:56 -04:00
whitequark
15d2fbaf51
Add an inline hint on Generator::next().
...
This improves the generate benchmark by about 1ns.
2016-07-17 13:56:03 -04:00
whitequark
16c674b4f4
Implement the GuardedStack marker trait.
2016-07-17 13:56:03 -04:00
whitequark
7ffad26cfd
Implement the safe Generator abstraction.
...
close #24
2016-07-17 13:55:56 -04:00
whitequark
758088c673
Fix Stack::new(0).
2016-07-17 13:55:43 -04:00
whitequark
aa364056fd
Add more documentation, and rephrase it elsewhere.
2016-07-16 20:54:47 -04:00
whitequark
ebd9ca8dec
Allocate guard page under existing stack, not in it.
...
This fixes a segfault when the allocated stack is just one page long.
This also refactors the fringe::os module to use Result consistently.
close #22
2016-07-16 20:54:33 -04:00
John Ericson
75ca6f66e1
Move x86 trampoline to naked function
...
Close #19
2016-07-16 16:39:19 -04:00
John Ericson
1ea4b01eda
Use mostly the same registers for consistency
...
The exception to this is %eax is used not %edi on x86 because its
caller-save
2016-07-16 16:39:14 -04:00
edef
bc184237cc
rename simd -> context_simd
...
This fixes a spurious rustc warning.
2016-07-16 16:18:58 -04:00
whitequark
cbe136b762
Completely rework fringe::Context and fringe::arch.
...
The new design concerns itself with one thing and exactly one thing:
passing values back and forth with an extern "C" function.
This allows to simplify fringe::arch into a single primitive, swap.
Close #21
2016-07-16 15:04:15 -04:00
whitequark
989b1d439c
Remove "os" feature; use target-specific dependencies instead.
2016-07-16 15:04:07 -04:00
edef
0d7b3d7091
add Windows support to OsStack
...
Fix #18
2016-04-16 07:51:10 +02:00
edef
6284a22caa
add fpsr, eflags for good measure
...
courtesy of @whitequark
2016-04-16 07:41:00 +02:00
edef
821d731803
format Cargo.toml as cargo would output it
2016-04-14 15:47:34 +02:00
John Ericson
35fb046fb5
Factor out common code between x86 and x86_64
...
Fix #17
2016-04-14 13:37:15 +02:00
John Ericson
c51290f8e7
Don't bring in std by mistake
...
Fix #16
2016-04-14 13:35:38 +02:00
John Ericson
65f4b0fd17
Turn the example into a test
...
Fix #14
2016-04-12 15:14:29 +02:00
edef
be21d75814
add (ignored) test for floating point exception state
...
Thanks, @talchas!
Fix #13
2016-04-12 15:13:47 +02:00
John Ericson
368fa9d3bf
Remove unnecessary unsafety
2016-04-12 14:40:12 +02:00
edef
32fdbbb474
move OutStack's bound to a where clause
2016-04-03 20:07:45 +02:00
edef
daece1a8d3
Registers::{swap2 => swap}, to match Context::swap
2016-04-03 19:56:15 +02:00
edef
976b971436
get rid of the old Context::swap
...
The two-parameter version is the only necessary API.
2016-04-03 19:55:25 +02:00
edef
026f7b9925
update benchmarks: 2.5ns on x86_64!
2016-04-03 12:04:46 +02:00
edef
a50e6771b4
coerce rust_trampoline to a function pointer properly
2016-04-03 12:00:21 +02:00
edef
644cd81f9e
fix parameter passing to arch/x86_64/swap.s
2016-04-03 11:59:14 +02:00
edef
58fa29930f
void: 0.0.5 -> 1.0.0
2016-04-03 08:54:56 +02:00
edef
3397e0bcf1
at least allow different lifetimes in Context::swap2
...
Really we should allow swapping between different stack types easily, so
we can easily swap between contexts with different stack types.
2016-03-22 08:46:27 +01:00
edef
b986931817
remove copyright years
...
They're obnoxious to update, and I'm told they have no legal value.
2016-03-22 08:25:23 +01:00
edef
709dad1c4a
add Context::swap2, to allow distinct save/restore contexts
...
Fix #5
Context::swap is now implemented in terms of Context::swap2, and it
might make sense to remove Context::swap entirely at some point.
2016-03-22 07:50:50 +01:00
edef
2b23083455
get rid of some minor warnings
2016-03-22 07:35:25 +01:00
edef
5512cf8cb7
run Cargo in verbose mode on Travis CI
2016-03-16 09:09:36 +01:00
edef
dbb30e535e
run `cargo build` as a separate Travis CI step
2016-03-16 09:07:20 +01:00
edef
4ffdba3ea6
minor style fixes
2016-03-16 00:20:45 +01:00
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
edef
f3954ff7e5
Don't pass --no-deps to cargo doc
...
This reverts commit 0eef4bfae9c166b48f7a5fbbd6fd7a9cc963ca5d.
rust-lang/cargo#1529 has been fixed, so this is no longer necessary.
2015-10-09 00:05:29 -04:00