# HG changeset patch # User Bram Moolenaar # Date 1628333105 -7200 # Node ID df39041f13ed30d02181853b8b5fdf46f4bedb9c # Parent 859e308bbd2f559efae16acbf55dd2b4528dcefb patch 8.2.3303: some structures could be smaller Commit: https://github.com/vim/vim/commit/3276f5846f7ad61f55175959ac21c1b4cf595352 Author: Dominique Pelle Date: Sat Aug 7 12:44:41 2021 +0200 patch 8.2.3303: some structures could be smaller Problem: Some structures could be smaller. Solution: Rearrange members to reduce size. (Dominique Pell?, closes https://github.com/vim/vim/issues/8725) diff --git a/src/structs.h b/src/structs.h --- a/src/structs.h +++ b/src/structs.h @@ -332,8 +332,8 @@ struct wininfo_S wininfo_T *wi_prev; // previous entry or NULL for first entry win_T *wi_win; // pointer to window that did set wi_fpos pos_T wi_fpos; // last cursor position in the file + winopt_T wi_opt; // local window options int wi_optset; // TRUE when wi_opt has useful values - winopt_T wi_opt; // local window options #ifdef FEAT_FOLDING int wi_fold_manual; // copy of w_fold_manual garray_T wi_folds; // clone of w_folds @@ -1238,8 +1238,8 @@ struct mapblock char m_silent; // used, don't echo commands char m_nowait; // used #ifdef FEAT_EVAL + char m_expr; // used, m_str is an expression sctx_T m_script_ctx; // SCTX where map was defined - char m_expr; // used, m_str is an expression #endif }; @@ -2017,12 +2017,12 @@ struct outer_S { struct partial_S { int pt_refcount; // reference count + int pt_auto; // when TRUE the partial was created for using + // dict.member in handle_subscript() char_u *pt_name; // function name; when NULL use // pt_func->uf_name ufunc_T *pt_func; // function pointer; when NULL lookup function // with pt_name - int pt_auto; // when TRUE the partial was created for using - // dict.member in handle_subscript() // For a compiled closure: the arguments and local variables scope outer_T pt_outer; @@ -2030,11 +2030,11 @@ struct partial_S funcstack_T *pt_funcstack; // copy of stack, used after context // function returns + typval_T *pt_argv; // arguments in allocated array int pt_argc; // number of arguments - typval_T *pt_argv; // arguments in allocated array - + + int pt_copyID; // funcstack may contain pointer to partial dict_T *pt_dict; // dict for "self" - int pt_copyID; // funcstack may contain pointer to partial }; typedef struct AutoPatCmd_S AutoPatCmd; @@ -2103,9 +2103,9 @@ struct jobvar_S PROCESS_INFORMATION jv_proc_info; HANDLE jv_job_object; #endif + jobstatus_T jv_status; char_u *jv_tty_in; // controlling tty input, allocated char_u *jv_tty_out; // controlling tty output, allocated - jobstatus_T jv_status; char_u *jv_stoponexit; // allocated #ifdef UNIX char_u *jv_termsig; // allocated @@ -3925,8 +3925,8 @@ struct VimMenu char_u *en_dname; // "dname" untranslated, NULL when "dname" // was not translated #endif + char_u *actext; // accelerator text (after TAB) int mnemonic; // mnemonic key (after '&') - char_u *actext; // accelerator text (after TAB) int priority; // Menu order priority #ifdef FEAT_GUI void (*cb)(vimmenu_T *); // Call-back function diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -756,6 +756,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 3303, +/**/ 3302, /**/ 3301, diff --git a/src/vim9.h b/src/vim9.h --- a/src/vim9.h +++ b/src/vim9.h @@ -456,9 +456,9 @@ struct dfunc_S { int df_refcount; // how many ufunc_T point to this dfunc_T int df_idx; // index in def_functions int df_deleted; // if TRUE function was deleted - char_u *df_name; // name used for error messages int df_script_seq; // Value of sctx_T sc_seq when the function // was compiled. + char_u *df_name; // name used for error messages garray_T df_def_args_isn; // default argument instructions garray_T df_var_names; // names of local vars @@ -466,12 +466,12 @@ struct dfunc_S { // After compiling "df_instr" and/or "df_instr_prof" is not NULL. isn_T *df_instr; // function body to be executed int df_instr_count; // size of "df_instr" + int df_instr_debug_count; // size of "df_instr_debug" + isn_T *df_instr_debug; // like "df_instr" with debugging #ifdef FEAT_PROFILE isn_T *df_instr_prof; // like "df_instr" with profiling int df_instr_prof_count; // size of "df_instr_prof" #endif - isn_T *df_instr_debug; // like "df_instr" with debugging - int df_instr_debug_count; // size of "df_instr_debug" int df_varcount; // number of local variables int df_has_closure; // one if a closure was created diff --git a/src/vim9execute.c b/src/vim9execute.c --- a/src/vim9execute.c +++ b/src/vim9execute.c @@ -85,8 +85,8 @@ struct ectx_S { garray_T ec_trystack; // stack of trycmd_T values + isn_T *ec_instr; // array with instructions int ec_dfunc_idx; // current function index - isn_T *ec_instr; // array with instructions int ec_iidx; // index in ec_instr: instruction to execute garray_T ec_funcrefs; // partials that might be a closure