Commit Graph

35 Commits

Author SHA1 Message Date
edef f21b8dc936 Update the license headers for MIT/Apache 2016-08-20 23:45:01 +02:00
edef b1a6b17d0a Move the Context tests and benches into src/
This concludes preparations for making Context private again.
2016-08-13 13:38:04 +02:00
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 7ffad26cfd Implement the safe Generator abstraction.
close #24
2016-07-17 13:55:56 -04:00
whitequark aa364056fd Add more documentation, and rephrase it elsewhere. 2016-07-16 20:54:47 -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
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 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
John Ericson 5411f10460 use Void to ensure closure diverges 2015-08-26 00:51:18 +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 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 68f70fb1c9 rename Context::destroy to Context::unwrap, in line with lang conventions 2015-04-16 07:49:13 -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 222ab0eaa9 make Context::destroy inlineable 2015-04-16 06:43:09 -04:00
edef f24e8e7911 add license headers to every file 2015-04-16 06:08:44 -04:00
edef 42db0ee5b1 loosen the lifetime bounds on Context
fix #6
ref #3
2015-04-16 04:01:02 -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 7167b0b570 add Context::destroy 2015-04-15 21:54:56 -04:00
edef 54b34383e3 parametrise Context on Stack 2015-04-15 21:51:37 -04:00
edef 8dc53c3125 make Context::new take a stack, instead of creating one 2015-04-15 19:35:27 -04:00
edef 27318bc271 rename platform to os 2015-04-15 19:35:27 -04:00
edef 7aa58f43f7 add StackSource and implement it for platform::Stack 2015-04-15 19:35:27 -04:00
edef 5c5f5095c3 move arch::{initialize_call_frame, swap} to inherent mthods of Registers
they're now Registers::{new, swap}, because they're
already effectively a constructor and a method.
2015-04-15 19:35:27 -04:00
edef 299a0a5d98 complete rewrite!
featuring 7ns inlineable context switches, no more separately-built
assembly objects, and a vastly nicer interface.
incontext/outcontext are no more, context switch calls now take a single
context structure, which functions as both.
everything now also functions without any heap allocations -- for the
context setup, only an FnOnce() value is necessary.
2015-01-14 11:27:43 +01:00
edef fec3f2eaef Rust updates 2015-01-09 22:45:39 +01:00
edef 59e723d099 free ourselves from the shackles of libstd 2014-12-24 07:28:21 +01:00
edef 3957ac99ae use arch::uintptr_t instead of libc::uintptr_t 2014-12-24 06:53:36 +01:00
edef 791173fd97 refactoring! 2014-12-24 06:44:03 +01:00
edef e9d6146b5b initial commit 2014-12-23 04:27:28 +01:00