quakeforge/ruamoko/scheme/Continuation.r
Bill Currie 75ec6bf244 Clean out some unnecessary types from the progs engine and clean up the mess.
This is a nasty commit, sorry, but 99% of the commit is interdependent.
2011-01-10 12:25:31 +09:00

52 lines
955 B
R

#include "Continuation.h"
#include "Machine.h"
#include "Cons.h"
#include "defs.h"
@implementation Continuation
+ (id) newWithState: (state_t []) st pc: (integer) p
{
return [[self alloc] initWithState: st pc: p];
}
- (id) initWithState: (state_t []) st pc: (integer) p
{
self = [self init];
state.program = st.program;
state.pc = p;
state.literals = st.literals;
state.stack = st.stack;
state.cont = st.cont;
state.env = st.env;
state.proc = st.proc;
state.lineinfo = st.lineinfo;
return self;
}
- (void) restoreOnMachine: (Machine []) m
{
[m state: &state];
return;
}
- (void) invokeOnMachine: (Machine []) m
{
[m value: [(Cons []) [m stack] car]];
[m state: &state];
return;
}
- (void) markReachable
{
[state.literals mark];
[state.stack mark];
[state.cont mark];
[state.env mark];
[state.proc mark];
}
- (string) printForm
{
return "<continuation>";
}
@end