Successfully added mutexes protecting freelist access. No behaviour change.
This commit is contained in:
parent
c59825d7fe
commit
f05d1af9d6
14 changed files with 132 additions and 69 deletions
|
|
@ -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 );
|
||||
|
|
|
|||
|
|
@ -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 );
|
||||
|
|
|
|||
|
|
@ -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 );
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue