diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-09-28 16:16:15 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-09-28 16:16:15 +0100 |
commit | 82418263fa91792e851cb0de879d1595327d5531 (patch) | |
tree | e14f38d9dba9dce01e0c3b6c6612ca577bf27b49 /src/proto | |
parent | 1936c765364d6a771cea5df9971318060db82730 (diff) | |
download | vim-git-82418263fa91792e851cb0de879d1595327d5531.tar.gz |
patch 9.0.0618: calling function for reduce() has too much overheadv9.0.0618
Problem: Calling function for reduce() has too much overhead.
Solution: Do not create a funccall_T every time.
Diffstat (limited to 'src/proto')
-rw-r--r-- | src/proto/eval.pro | 3 | ||||
-rw-r--r-- | src/proto/list.pro | 2 |
2 files changed, 3 insertions, 2 deletions
diff --git a/src/proto/eval.pro b/src/proto/eval.pro index 27a13c949..1ac579c54 100644 --- a/src/proto/eval.pro +++ b/src/proto/eval.pro @@ -6,7 +6,8 @@ void eval_clear(void); void fill_evalarg_from_eap(evalarg_T *evalarg, exarg_T *eap, int skip); int eval_to_bool(char_u *arg, int *error, exarg_T *eap, int skip); int eval_expr_valid_arg(typval_T *tv); -int eval_expr_typval(typval_T *expr, typval_T *argv, int argc, typval_T *rettv); +funccall_T *eval_expr_get_funccal(typval_T *expr, typval_T *rettv); +int eval_expr_typval(typval_T *expr, typval_T *argv, int argc, funccall_T *fc_arg, typval_T *rettv); int eval_expr_to_bool(typval_T *expr, int *error); char_u *eval_to_string_skip(char_u *arg, exarg_T *eap, int skip); void init_evalarg(evalarg_T *evalarg); diff --git a/src/proto/list.pro b/src/proto/list.pro index 6c3523a0a..5abe03c09 100644 --- a/src/proto/list.pro +++ b/src/proto/list.pro @@ -52,7 +52,7 @@ void init_static_list(staticList10_T *sl); void f_list2str(typval_T *argvars, typval_T *rettv); void f_sort(typval_T *argvars, typval_T *rettv); void f_uniq(typval_T *argvars, typval_T *rettv); -int filter_map_one(typval_T *tv, typval_T *expr, filtermap_T filtermap, typval_T *newtv, int *remp); +int filter_map_one(typval_T *tv, typval_T *expr, filtermap_T filtermap, funccall_T *fc, typval_T *newtv, int *remp); void f_filter(typval_T *argvars, typval_T *rettv); void f_map(typval_T *argvars, typval_T *rettv); void f_mapnew(typval_T *argvars, typval_T *rettv); |