Successfully added mutexes protecting freelist access. No behaviour change.

This commit is contained in:
Simon Brooke 2026-04-20 13:59:47 +01:00
parent c59825d7fe
commit f05d1af9d6
14 changed files with 132 additions and 69 deletions

View file

@ -30,7 +30,7 @@
* @param cdr the pointer which should form the cdr of this cons cell.
* @return struct pso_pointer a pointer to the newly allocated cons cell.
*/
struct pso_pointer c_cons(struct pso_pointer car, struct pso_pointer cdr) {
struct pso_pointer make_cons(struct pso_pointer car, struct pso_pointer cdr) {
// todo: issue #21: must have stack frame passed in.
struct pso_pointer result = allocate( CONSTAG, 2 );
@ -84,7 +84,7 @@ struct pso_pointer c_cdr(struct pso_pointer p) {
break;
default:
result =
make_exception( c_cons
make_exception( make_cons
( c_string_to_lisp_string
( L"Invalid type for cdr" ),
get_tag_string( p ) ), nil, nil, nil );

View file

@ -31,7 +31,7 @@ struct pso_pointer c_car( struct pso_pointer cons );
struct pso_pointer c_cdr( struct pso_pointer cons );
// todo: issue #21: must have stack frame passed in.
struct pso_pointer c_cons( struct pso_pointer car, struct pso_pointer cdr );
struct pso_pointer make_cons( struct pso_pointer car, struct pso_pointer cdr );
struct pso_pointer destroy_cons( struct pso_pointer fp,
struct pso_pointer env );

View file

@ -72,7 +72,7 @@ struct pso_pointer make_frame( int arg_count, struct pso_pointer previous,
for ( ; cursor < arg_count; cursor++ ) {
more_args =
c_cons( va_arg( args, struct pso_pointer ), more_args );
make_cons( va_arg( args, struct pso_pointer ), more_args );
}
frame->payload.stack_frame.more = c_reverse( more_args );

View file

@ -31,6 +31,10 @@ struct stack_frame_payload {
struct pso_pointer more;
/** the function to be called. */
struct pso_pointer function;
/** the execute-time environment */
struct pso_pointer env;
/** a list of objects created in the context of this frame */
struct pso_pointer locals;
/** the number of arguments provided. */
uint32_t args;
/** the depth of the stack below this frame */