diff src/evalvars.c @ 19191:133ef7ba4e4e v8.2.0154

patch 8.2.0154: reallocating the list of scripts is inefficient Commit: https://github.com/vim/vim/commit/21b9e9773d64de40994f8762173bdd8befa6acf7 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jan 26 19:26:46 2020 +0100 patch 8.2.0154: reallocating the list of scripts is inefficient Problem: Reallocating the list of scripts is inefficient. Solution: Instead of using a growarray of scriptitem_T, store pointers and allocate each scriptitem_T separately. Also avoids that the growarray pointers change when sourcing a new script.
author Bram Moolenaar <Bram@vim.org>
date Sun, 26 Jan 2020 19:30:14 +0100
parents 94eda51ba9ba
children 2ef19eed524a
line wrap: on
line diff
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -2289,7 +2289,7 @@ get_var_tv(
 	// imported variable from another script
 	if (import != NULL)
 	{
-	    scriptitem_T    *si = &SCRIPT_ITEM(import->imp_sid);
+	    scriptitem_T    *si = SCRIPT_ITEM(import->imp_sid);
 	    svar_T	    *sv = ((svar_T *)si->sn_var_vals.ga_data)
 						    + import->imp_var_vals_idx;
 	    tv = sv->sv_tv;
@@ -2571,7 +2571,7 @@ new_script_vars(scid_T id)
     if (sv == NULL)
 	return;
     init_var_dict(&sv->sv_dict, &sv->sv_var, VAR_SCOPE);
-    SCRIPT_ITEM(id).sn_vars = sv;
+    SCRIPT_ITEM(id)->sn_vars = sv;
 }
 
 /*
@@ -2876,7 +2876,7 @@ set_var_const(
 
 	if (is_script_local && current_sctx.sc_version == SCRIPT_VERSION_VIM9)
 	{
-	    scriptitem_T *si = &SCRIPT_ITEM(current_sctx.sc_sid);
+	    scriptitem_T *si = SCRIPT_ITEM(current_sctx.sc_sid);
 
 	    // Store a pointer to the typval_T, so that it can be found by
 	    // index instead of using a hastab lookup.