0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

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.
This commit is contained in:
Bram Moolenaar
2020-01-26 19:26:46 +01:00
parent b3de5114ac
commit 21b9e9773d
10 changed files with 54 additions and 46 deletions

View File

@@ -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;