Ran a 'make format', because !'m close to being able to merge this feature.
This commit is contained in:
parent
5e64a33965
commit
80049f2272
52 changed files with 936 additions and 843 deletions
|
|
@ -100,22 +100,28 @@ struct pso_pointer push_local( struct pso_pointer frame_pointer,
|
|||
*
|
||||
* @return `nil` on success; potentially an exception on failure.
|
||||
*/
|
||||
struct pso_pointer add_arg( struct pso_pointer frame_pointer, struct pso_pointer arg_pointer) {
|
||||
struct pso4* frame = pointer_to_pso4( frame_pointer);
|
||||
struct pso_pointer add_arg( struct pso_pointer frame_pointer,
|
||||
struct pso_pointer arg_pointer ) {
|
||||
struct pso4 *frame = pointer_to_pso4( frame_pointer );
|
||||
struct pso_pointer result = nil;
|
||||
|
||||
if (frame->payload.stack_frame.args < args_in_frame) {
|
||||
frame->payload.stack_frame.arg[frame->payload.stack_frame.args++] = push_local(frame_pointer, arg_pointer);
|
||||
if ( frame->payload.stack_frame.args < args_in_frame ) {
|
||||
frame->payload.stack_frame.arg[frame->payload.stack_frame.args++] =
|
||||
push_local( frame_pointer, arg_pointer );
|
||||
} else {
|
||||
struct pso_pointer new_more = c_reverse( frame_pointer,
|
||||
make_cons( frame_pointer,
|
||||
arg_pointer,
|
||||
c_reverse( frame_pointer, frame->payload.stack_frame.more)));
|
||||
if (exceptionp(new_more)) {
|
||||
make_cons( frame_pointer,
|
||||
arg_pointer,
|
||||
c_reverse
|
||||
( frame_pointer,
|
||||
frame->payload.
|
||||
stack_frame.
|
||||
more ) ) );
|
||||
if ( exceptionp( new_more ) ) {
|
||||
result = new_more;
|
||||
} else {
|
||||
frame->payload.stack_frame.more =
|
||||
push_local( frame_pointer, new_more);
|
||||
push_local( frame_pointer, new_more );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -127,7 +133,7 @@ struct pso_pointer add_arg( struct pso_pointer frame_pointer, struct pso_pointer
|
|||
* `env` pointer of the new frame -- callers are responsible for doing so.
|
||||
*/
|
||||
struct pso_pointer in_make_frame( int arg_count, struct pso_pointer previous,
|
||||
va_list args ) {
|
||||
va_list args ) {
|
||||
/* NOTE! It is really important not to `push_local` the new_pointer here,
|
||||
* since that would stop stack frames and all the temporary objects they
|
||||
* curate ever being garbage collected! */
|
||||
|
|
@ -205,13 +211,14 @@ struct pso_pointer make_frame( int arg_count, struct pso_pointer previous,
|
|||
va_list args;
|
||||
va_start( args, previous );
|
||||
|
||||
struct pso_pointer new_pointer = in_make_frame( arg_count, previous, args);
|
||||
struct pso4* new_frame = pointer_to_pso4(new_pointer);
|
||||
struct pso_pointer new_pointer =
|
||||
in_make_frame( arg_count, previous, args );
|
||||
struct pso4 *new_frame = pointer_to_pso4( new_pointer );
|
||||
|
||||
new_frame->payload.stack_frame.env = stackp(previous) ?
|
||||
inc_ref(pointer_to_pso4(previous)->payload.stack_frame.env) : nil;
|
||||
new_frame->payload.stack_frame.env = stackp( previous ) ?
|
||||
inc_ref( pointer_to_pso4( previous )->payload.stack_frame.env ) : nil;
|
||||
|
||||
va_end(args);
|
||||
va_end( args );
|
||||
|
||||
return new_pointer;
|
||||
}
|
||||
|
|
@ -238,10 +245,11 @@ struct pso_pointer make_frame_with_env( int arg_count,
|
|||
va_list args;
|
||||
va_start( args, env );
|
||||
|
||||
struct pso_pointer new_pointer = in_make_frame( arg_count, previous, args);
|
||||
pointer_to_pso4(new_pointer)->payload.stack_frame.env = inc_ref( env);
|
||||
struct pso_pointer new_pointer =
|
||||
in_make_frame( arg_count, previous, args );
|
||||
pointer_to_pso4( new_pointer )->payload.stack_frame.env = inc_ref( env );
|
||||
|
||||
va_end(args);
|
||||
va_end( args );
|
||||
|
||||
return new_pointer;
|
||||
}
|
||||
|
|
@ -270,8 +278,8 @@ struct pso_pointer make_frame_with_arglist_and_env( struct pso_pointer
|
|||
struct pso_pointer arg_length =
|
||||
count( push_local( previous, make_frame( 1, previous, argvalues ) ) );
|
||||
int arg_count =
|
||||
integerp( arg_length ) ? pointer_to_object( arg_length )->
|
||||
payload.integer.value : 0;
|
||||
integerp( arg_length ) ? pointer_to_object( arg_length )->payload.
|
||||
integer.value : 0;
|
||||
#ifdef DEBUG
|
||||
debug_printf( DEBUG_ALLOC, 0,
|
||||
L"\nAllocating stack frame with %d arguments at page %d, "
|
||||
|
|
@ -330,8 +338,8 @@ struct pso_pointer make_frame_with_arglist( struct pso_pointer previous,
|
|||
struct pso_pointer argvalues ) {
|
||||
return make_frame_with_arglist_and_env( previous, argvalues,
|
||||
pointer_to_pso4
|
||||
( previous )->payload.stack_frame.
|
||||
env );
|
||||
( previous )->payload.
|
||||
stack_frame.env );
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue