+
+// for (i = 0; i < s->args->count; ++i) {
+// decl_arg *darg = s->args->args[i];
+// impl_val tmp, tmp_ptr;
+// zval ztmp;
+// char *ptr = (char *) ret_val->ptr + darg->layout->pos;
+//
+// tmp_ptr.ptr = &tmp;
+// memset(&tmp, 0, sizeof(tmp));
+// memcpy(&tmp, ptr, darg->layout->len);
+// switch (real_decl_type(darg->type)->type) {
+// case PSI_T_FLOAT:
+// case PSI_T_DOUBLE:
+// psi_to_double(&ztmp, real_decl_type(darg->type)->type, &tmp, darg->var);
+// break;
+// case PSI_T_INT8:
+// case PSI_T_UINT8:
+// if (darg->var->pointer_level) {
+// psi_to_string(&ztmp, real_decl_type(darg->type)->type, &tmp_ptr, darg->var);
+// break;
+// }
+// /* no break */
+// case PSI_T_INT16:
+// case PSI_T_UINT16:
+// case PSI_T_INT32:
+// case PSI_T_UINT32:
+// case PSI_T_INT64:
+// case PSI_T_UINT64:
+// psi_to_int(&ztmp, real_decl_type(darg->type)->type, &tmp, darg->var);
+// break;
+// case PSI_T_STRUCT:
+// psi_to_array(&ztmp, real_decl_type(darg->type)->type, &tmp_ptr, darg->var);
+// break;
+// default:
+// printf("t=%d\n", real_decl_type(darg->type)->type);
+// abort();
+// }
+// add_assoc_zval(return_value, darg->var->name, &ztmp);
+// }
+ return;