diff src/vim9execute.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 9f98957582d6
line wrap: on
line diff
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -492,7 +492,7 @@ call_def_function(
 	    case ISN_LOADSCRIPT:
 		{
 		    scriptitem_T *si =
-				 &SCRIPT_ITEM(iptr->isn_arg.script.script_sid);
+				  SCRIPT_ITEM(iptr->isn_arg.script.script_sid);
 		    svar_T	 *sv;
 
 		    sv = ((svar_T *)si->sn_var_vals.ga_data)
@@ -598,7 +598,7 @@ call_def_function(
 	    // store script-local variable
 	    case ISN_STORESCRIPT:
 		{
-		    scriptitem_T *si = &SCRIPT_ITEM(
+		    scriptitem_T *si = SCRIPT_ITEM(
 					      iptr->isn_arg.script.script_sid);
 		    svar_T	 *sv = ((svar_T *)si->sn_var_vals.ga_data)
 					     + iptr->isn_arg.script.script_idx;
@@ -1551,7 +1551,7 @@ ex_disassemble(exarg_T *eap)
 	    case ISN_LOADSCRIPT:
 		{
 		    scriptitem_T *si =
-				 &SCRIPT_ITEM(iptr->isn_arg.script.script_sid);
+				  SCRIPT_ITEM(iptr->isn_arg.script.script_sid);
 		    svar_T *sv = ((svar_T *)si->sn_var_vals.ga_data)
 					     + iptr->isn_arg.script.script_idx;
 
@@ -1561,7 +1561,7 @@ ex_disassemble(exarg_T *eap)
 		break;
 	    case ISN_LOADS:
 		{
-		    scriptitem_T *si = &SCRIPT_ITEM(iptr->isn_arg.loads.ls_sid);
+		    scriptitem_T *si = SCRIPT_ITEM(iptr->isn_arg.loads.ls_sid);
 
 		    smsg("%4d LOADS s:%s from %s", current,
 					    iptr->isn_arg.string, si->sn_name);
@@ -1589,7 +1589,7 @@ ex_disassemble(exarg_T *eap)
 	    case ISN_STORESCRIPT:
 		{
 		    scriptitem_T *si =
-				 &SCRIPT_ITEM(iptr->isn_arg.script.script_sid);
+				  SCRIPT_ITEM(iptr->isn_arg.script.script_sid);
 		    svar_T *sv = ((svar_T *)si->sn_var_vals.ga_data)
 					     + iptr->isn_arg.script.script_idx;