- Add vim-speedup-gc.patch to improve garbage collection performance.
Based on https://github.com/neovim/neovim/pull/1761 (boo#899747) OBS-URL: https://build.opensuse.org/package/show/editors/vim?expand=0&rev=253
This commit is contained in:
parent
6e4e8b542c
commit
cf84e4ad29
76
vim-speedup-gc.patch
Normal file
76
vim-speedup-gc.patch
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
Index: vim-7.4.580.hg.6506/src/eval.c
|
||||||
|
===================================================================
|
||||||
|
--- vim-7.4.580.hg.6506.orig/src/eval.c
|
||||||
|
+++ vim-7.4.580.hg.6506/src/eval.c
|
||||||
|
@@ -6927,48 +6927,51 @@ garbage_collect()
|
||||||
|
free_unref_items(copyID)
|
||||||
|
int copyID;
|
||||||
|
{
|
||||||
|
- dict_T *dd;
|
||||||
|
- list_T *ll;
|
||||||
|
+ dict_T *dd, *dd_next;
|
||||||
|
+ list_T *ll, *ll_next;
|
||||||
|
int did_free = FALSE;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Go through the list of dicts and free items without the copyID.
|
||||||
|
*/
|
||||||
|
- for (dd = first_dict; dd != NULL; )
|
||||||
|
+ for (dd = first_dict; dd != NULL; ) {
|
||||||
|
if ((dd->dv_copyID & COPYID_MASK) != (copyID & COPYID_MASK))
|
||||||
|
{
|
||||||
|
/* Free the Dictionary and ordinary items it contains, but don't
|
||||||
|
* recurse into Lists and Dictionaries, they will be in the list
|
||||||
|
* of dicts or list of lists. */
|
||||||
|
+ dd_next = dd->dv_used_next;
|
||||||
|
dict_free(dd, FALSE);
|
||||||
|
did_free = TRUE;
|
||||||
|
-
|
||||||
|
- /* restart, next dict may also have been freed */
|
||||||
|
- dd = first_dict;
|
||||||
|
+ dd = dd_next;
|
||||||
|
}
|
||||||
|
- else
|
||||||
|
+ else {
|
||||||
|
dd = dd->dv_used_next;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Go through the list of lists and free items without the copyID.
|
||||||
|
* But don't free a list that has a watcher (used in a for loop), these
|
||||||
|
* are not referenced anywhere.
|
||||||
|
*/
|
||||||
|
- for (ll = first_list; ll != NULL; )
|
||||||
|
+ for (ll = first_list; ll != NULL; ) {
|
||||||
|
if ((ll->lv_copyID & COPYID_MASK) != (copyID & COPYID_MASK)
|
||||||
|
&& ll->lv_watch == NULL)
|
||||||
|
{
|
||||||
|
/* Free the List and ordinary items it contains, but don't recurse
|
||||||
|
* into Lists and Dictionaries, they will be in the list of dicts
|
||||||
|
* or list of lists. */
|
||||||
|
+
|
||||||
|
+ ll_next = ll->lv_used_next;
|
||||||
|
list_free(ll, FALSE);
|
||||||
|
did_free = TRUE;
|
||||||
|
-
|
||||||
|
- /* restart, next list may also have been freed */
|
||||||
|
- ll = first_list;
|
||||||
|
+ ll = ll_next;
|
||||||
|
}
|
||||||
|
- else
|
||||||
|
+ else {
|
||||||
|
ll = ll->lv_used_next;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
|
||||||
|
return did_free;
|
||||||
|
}
|
||||||
|
@@ -7125,6 +7128,7 @@ dict_free(d, recurse)
|
||||||
|
|
||||||
|
/* Lock the hashtab, we don't want it to resize while freeing items. */
|
||||||
|
hash_lock(&d->dv_hashtab);
|
||||||
|
+ assert(d->dv_hashtab.ht_locked > 0);
|
||||||
|
todo = (int)d->dv_hashtab.ht_used;
|
||||||
|
for (hi = d->dv_hashtab.ht_array; todo > 0; ++hi)
|
||||||
|
{
|
@ -1,3 +1,9 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Jan 30 09:45:18 UTC 2015 - idonmez@suse.com
|
||||||
|
|
||||||
|
- Add vim-speedup-gc.patch to improve garbage collection performance.
|
||||||
|
Based on https://github.com/neovim/neovim/pull/1761 (boo#899747)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu Jan 29 12:25:06 UTC 2015 - idonmez@suse.com
|
Thu Jan 29 12:25:06 UTC 2015 - idonmez@suse.com
|
||||||
|
|
||||||
|
2
vim.spec
2
vim.spec
@ -105,6 +105,7 @@ Patch18: %{name}-7.3-filetype_spec.patch
|
|||||||
Patch19: %{name}-7.3-diff_check.patch
|
Patch19: %{name}-7.3-diff_check.patch
|
||||||
Patch21: %{name}-7.3-filetype_changes.patch
|
Patch21: %{name}-7.3-filetype_changes.patch
|
||||||
Patch22: %{name}-7.4-filetype_mine.patch
|
Patch22: %{name}-7.4-filetype_mine.patch
|
||||||
|
Patch23: %{name}-speedup-gc.patch
|
||||||
Patch100: vim-7.1.314-CVE-2009-0316-debian.patch
|
Patch100: vim-7.1.314-CVE-2009-0316-debian.patch
|
||||||
Patch101: vim73-no-static-libpython.patch
|
Patch101: vim73-no-static-libpython.patch
|
||||||
%{perl_requires}
|
%{perl_requires}
|
||||||
@ -187,6 +188,7 @@ cp %{SOURCE23} runtime/syntax/apparmor.vim
|
|||||||
%patch19 -p1
|
%patch19 -p1
|
||||||
%patch21 -p1
|
%patch21 -p1
|
||||||
%patch22 -p1
|
%patch22 -p1
|
||||||
|
%patch23 -p1
|
||||||
%patch100 -p1
|
%patch100 -p1
|
||||||
%patch101
|
%patch101
|
||||||
cp %{SOURCE3} %{SOURCE4} %{SOURCE5} %{SOURCE8} %{SOURCE10} .
|
cp %{SOURCE3} %{SOURCE4} %{SOURCE5} %{SOURCE8} %{SOURCE10} .
|
||||||
|
Loading…
Reference in New Issue
Block a user