Patch 8.2.3303
Problem:    Some structures could be smaller.
Solution:   Rearrange members to reduce size. (Dominique Pellé, closes #8725)
Files:      src/structs.h, src/vim9.h, src/vim9execute.c


*** ../vim-8.2.3302/src/structs.h       2021-08-03 18:33:04.651157866 +0200
--- src/structs.h       2021-08-07 12:40:39.652836648 +0200
***************
*** 332,339 ****
      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
-     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
--- 332,339 ----
      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
  #ifdef FEAT_FOLDING
      int               wi_fold_manual; // copy of w_fold_manual
      garray_T  wi_folds;       // clone of w_folds
***************
*** 1238,1245 ****
      char      m_silent;       // <silent> used, don't echo commands
      char      m_nowait;       // <nowait> used
  #ifdef FEAT_EVAL
-     sctx_T    m_script_ctx;   // SCTX where map was defined
      char      m_expr;         // <expr> used, m_str is an expression
  #endif
  };
  
--- 1238,1245 ----
      char      m_silent;       // <silent> used, don't echo commands
      char      m_nowait;       // <nowait> used
  #ifdef FEAT_EVAL
      char      m_expr;         // <expr> used, m_str is an expression
+     sctx_T    m_script_ctx;   // SCTX where map was defined
  #endif
  };
  
***************
*** 2017,2028 ****
  struct partial_S
  {
      int               pt_refcount;    // reference count
      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;
--- 2017,2028 ----
  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
  
      // For a compiled closure: the arguments and local variables scope
      outer_T   pt_outer;
***************
*** 2030,2040 ****
      funcstack_T       *pt_funcstack;  // copy of stack, used after context
                                // function returns
  
-     int               pt_argc;        // number of arguments
      typval_T  *pt_argv;       // arguments in allocated array
  
-     dict_T    *pt_dict;       // dict for "self"
      int               pt_copyID;      // funcstack may contain pointer to 
partial
  };
  
  typedef struct AutoPatCmd_S AutoPatCmd;
--- 2030,2040 ----
      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
  
      int               pt_copyID;      // funcstack may contain pointer to 
partial
+     dict_T    *pt_dict;       // dict for "self"
  };
  
  typedef struct AutoPatCmd_S AutoPatCmd;
***************
*** 2103,2111 ****
      PROCESS_INFORMATION       jv_proc_info;
      HANDLE            jv_job_object;
  #endif
      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
--- 2103,2111 ----
      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
      char_u    *jv_stoponexit; // allocated
  #ifdef UNIX
      char_u    *jv_termsig;    // allocated
***************
*** 3925,3932 ****
      char_u    *en_dname;          // "dname" untranslated, NULL when "dname"
                                    // was not translated
  #endif
-     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
--- 3925,3932 ----
      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 '&')
      int               priority;           // Menu order priority
  #ifdef FEAT_GUI
      void      (*cb)(vimmenu_T *); // Call-back function
*** ../vim-8.2.3302/src/vim9.h  2021-06-26 21:20:59.791632565 +0200
--- src/vim9.h  2021-08-07 12:40:39.652836648 +0200
***************
*** 456,464 ****
      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.
  
      garray_T  df_def_args_isn;    // default argument instructions
      garray_T  df_var_names;       // names of local vars
--- 456,464 ----
      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
      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,477 ****
      // 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"
  #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
--- 466,477 ----
      // 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
  
      int               df_varcount;        // number of local variables
      int               df_has_closure;     // one if a closure was created
*** ../vim-8.2.3302/src/vim9execute.c   2021-08-02 19:10:30.961721085 +0200
--- src/vim9execute.c   2021-08-07 12:40:39.652836648 +0200
***************
*** 85,92 ****
  
      garray_T  ec_trystack;    // stack of trycmd_T values
  
-     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
--- 85,92 ----
  
      garray_T  ec_trystack;    // stack of trycmd_T values
  
      isn_T     *ec_instr;      // array with instructions
+     int               ec_dfunc_idx;   // current function index
      int               ec_iidx;        // index in ec_instr: instruction to 
execute
  
      garray_T  ec_funcrefs;    // partials that might be a closure
*** ../vim-8.2.3302/src/version.c       2021-08-07 12:31:53.689892833 +0200
--- src/version.c       2021-08-07 12:41:05.044776764 +0200
***************
*** 757,758 ****
--- 757,760 ----
  {   /* Add new patch number below this line */
+ /**/
+     3303,
  /**/

-- 
Q: Is selling software the same as selling hardware?
A: No, good hardware is sold new, good software has already been used by many.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///                                                                      \\\
\\\        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/202108071045.177AjJqW1805282%40masaka.moolenaar.net.

Raspunde prin e-mail lui