| 3121 | } |
| 3122 | |
| 3123 | void argument_list_pop( struct arg_list * formal, int formal_count, |
| 3124 | FRAME * frame, STACK * s ) |
| 3125 | { |
| 3126 | int i; |
| 3127 | for ( i = formal_count - 1; i >= 0; --i ) |
| 3128 | { |
| 3129 | int j; |
| 3130 | for ( j = formal[ i ].size - 1; j >= 0 ; --j ) |
| 3131 | { |
| 3132 | struct argument * formal_arg = &formal[ i ].args[ j ]; |
| 3133 | |
| 3134 | if ( formal_arg->flags == ARG_VARIADIC ) |
| 3135 | continue; |
| 3136 | if ( formal_arg->index != -1 ) |
| 3137 | { |
| 3138 | LIST * const old = stack_pop( s ); |
| 3139 | LIST * * const pos = &frame->module->fixed_variables[ |
| 3140 | formal_arg->index ]; |
| 3141 | list_free( *pos ); |
| 3142 | *pos = old; |
| 3143 | } |
| 3144 | else |
| 3145 | var_set( frame->module, formal_arg->arg_name, stack_pop( s ), |
| 3146 | VAR_SET ); |
| 3147 | } |
| 3148 | } |
| 3149 | } |
| 3150 | |
| 3151 | |
| 3152 | struct argument_compiler |
no test coverage detected