commit 9a6d9ea57a41c046b135281ee574e7d877d359c9
parent 062e809e542ec066986c4e3e054f95e1bfc0cb50
Author: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
Date: Mon, 23 Nov 2009 12:59:06 -0200
GC may get stuck during a parser and avoids proper resizing of the
string table, making its lists grow too much and degrading performance.
Diffstat:
M | bugs | | | 29 | +++++++++++++++++++++++++++-- |
1 file changed, 27 insertions(+), 2 deletions(-)
diff --git a/bugs b/bugs
@@ -1880,8 +1880,8 @@ patch = [[
+++ lundump.c 2008/04/04 19:51:41 2.7.1.4
@@ -1,5 +1,5 @@
/*
--** $Id: bugs,v 1.103 2009/08/04 18:51:19 roberto Exp roberto $
-+** $Id: bugs,v 1.103 2009/08/04 18:51:19 roberto Exp roberto $
+-** $Id: bugs,v 1.104 2009/08/05 13:09:38 roberto Exp roberto $
++** $Id: bugs,v 1.104 2009/08/05 13:09:38 roberto Exp roberto $
** load precompiled Lua chunks
** See Copyright Notice in lua.h
*/
@@ -2232,3 +2232,28 @@ patch = [[
]],
}
+Bug{
+what = [[GC may get stuck during a parser and avoids proper resizing of
+the string table,
+making its lists grow too much and degrading performance]],
+report = [[Sean Conner, 2009/11/10]],
+since = [[5.1]],
+example = [[See http://lua-users.org/lists/lua-l/2009-11/msg00463.html]],
+patch = [[
+--- llex.c 2007/12/27 13:02:25 2.20.1.1
++++ llex.c 2009/11/23 14:49:40
+@@ -118,8 +118,10 @@
+ lua_State *L = ls->L;
+ TString *ts = luaS_newlstr(L, str, l);
+ TValue *o = luaH_setstr(L, ls->fs->h, ts); /* entry for `str' */
+- if (ttisnil(o))
++ if (ttisnil(o)) {
+ setbvalue(o, 1); /* make sure `str' will not be collected */
++ luaC_checkGC(L);
++ }
+ return ts;
+ }
+
+]]
+}
+