| 3393 | } |
| 3394 | |
| 3395 | void argument_list_pop( struct arg_list * formal, int32_t formal_count, |
| 3396 | FRAME * frame, STACK * s ) |
| 3397 | { |
| 3398 | int32_t i; |
| 3399 | for ( i = formal_count - 1; i >= 0; --i ) |
| 3400 | { |
| 3401 | int32_t j; |
| 3402 | for ( j = formal[ i ].size - 1; j >= 0 ; --j ) |
| 3403 | { |
| 3404 | struct argument * formal_arg = &formal[ i ].args[ j ]; |
| 3405 | |
| 3406 | if ( formal_arg->flags == ARG_VARIADIC ) |
| 3407 | continue; |
| 3408 | if ( formal_arg->index != -1 ) |
| 3409 | { |
| 3410 | LIST * const old = stack_pop( s ); |
| 3411 | LIST * * const pos = &frame->module->fixed_variables[ |
| 3412 | formal_arg->index ]; |
| 3413 | list_free( *pos ); |
| 3414 | *pos = old; |
| 3415 | } |
| 3416 | else |
| 3417 | var_set( frame->module, formal_arg->arg_name, stack_pop( s ), |
| 3418 | VAR_SET ); |
| 3419 | } |
| 3420 | } |
| 3421 | } |
| 3422 | |
| 3423 | |
| 3424 | struct argument_compiler |
no test coverage detected