| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
Simplify the implementation of calling continuations. Since we don't
support next-ingredient on continuations, might as well not bother with
all that call housekeeping for ingredients.
|
|
|
|
|
|
|
|
|
| |
Bugfix: I hadn't been allowing continuations to be copied.
Deepens our initial sin of managing the Mu call stack implicitly in the
C interpreter. Since the call stack was implicit, continuations had to
be implicit as well. Since continuations aren't in Mu's memory, we have
to replicate refcounting logic for them.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
At least this particular implementation of them. Let's play with them
now for a while, see if they're fully equivalent to shift/reduce.
|
|
|
|
|
|
| |
Surprisingly small change, considering how long it took me and how
mind-bending it was. 'return-continuation-until-mark' now behaves like
both call and return instructions, which made it hard to reason about.
|
| |
|
| |
|
|
|
|
| |
Return other values along with the current continuation.
|
| |
|
|
|
|
|
| |
Stop hardcoding Max_depth everywhere; we had a default value for a
reason but then we forgot all about it.
|
| |
|
| |
|
| |
|
| |
|
|
They're back after a long hiatus: commit 2295 in Oct 2015.
I'm not convinced anymore that this is actually a correct implementation
of continuations. Issues on at least two fronts:
a) These aren't safe yet. Since continuations can be called multiple
times, we need to disable reclamation of locals inside a continuation.
There may be other type- or memory-safety issues. However, delimited
continuations at least seem possible to make safe. Undelimited
continuations (call/cc) though are permanently out.
b) They may not actually be as powerful as delimited continuations.
Let's see if I can build 'yield' out of these primitives.
|