aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2009-11-23 12:59:30 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2009-11-23 12:59:30 -0200
commit9a6d9ea57a41c046b135281ee574e7d877d359c9 (patch)
tree04cf61a40ce4f39f5d2e3ef913cdb35c37782657
parent062e809e542ec066986c4e3e054f95e1bfc0cb50 (diff)
downloadlua-9a6d9ea57a41c046b135281ee574e7d877d359c9.tar.gz
lua-9a6d9ea57a41c046b135281ee574e7d877d359c9.tar.bz2
lua-9a6d9ea57a41c046b135281ee574e7d877d359c9.zip
GC may get stuck during a parser and avoids proper resizing of the
string table, making its lists grow too much and degrading performance.
-rw-r--r--bugs29
1 files changed, 27 insertions, 2 deletions
diff --git a/bugs b/bugs
index f57a9dd4..d82bedfd 100644
--- a/bugs
+++ b/bugs
@@ -1880,8 +1880,8 @@ patch = [[
1880+++ lundump.c 2008/04/04 19:51:41 2.7.1.4 1880+++ lundump.c 2008/04/04 19:51:41 2.7.1.4
1881@@ -1,5 +1,5 @@ 1881@@ -1,5 +1,5 @@
1882 /* 1882 /*
1883-** $Id: bugs,v 1.103 2009/08/04 18:51:19 roberto Exp roberto $ 1883-** $Id: bugs,v 1.104 2009/08/05 13:09:38 roberto Exp roberto $
1884+** $Id: bugs,v 1.103 2009/08/04 18:51:19 roberto Exp roberto $ 1884+** $Id: bugs,v 1.104 2009/08/05 13:09:38 roberto Exp roberto $
1885 ** load precompiled Lua chunks 1885 ** load precompiled Lua chunks
1886 ** See Copyright Notice in lua.h 1886 ** See Copyright Notice in lua.h
1887 */ 1887 */
@@ -2232,3 +2232,28 @@ patch = [[
2232]], 2232]],
2233} 2233}
2234 2234
2235Bug{
2236what = [[GC may get stuck during a parser and avoids proper resizing of
2237the string table,
2238making its lists grow too much and degrading performance]],
2239report = [[Sean Conner, 2009/11/10]],
2240since = [[5.1]],
2241example = [[See http://lua-users.org/lists/lua-l/2009-11/msg00463.html]],
2242patch = [[
2243--- llex.c 2007/12/27 13:02:25 2.20.1.1
2244+++ llex.c 2009/11/23 14:49:40
2245@@ -118,8 +118,10 @@
2246 lua_State *L = ls->L;
2247 TString *ts = luaS_newlstr(L, str, l);
2248 TValue *o = luaH_setstr(L, ls->fs->h, ts); /* entry for `str' */
2249- if (ttisnil(o))
2250+ if (ttisnil(o)) {
2251 setbvalue(o, 1); /* make sure `str' will not be collected */
2252+ luaC_checkGC(L);
2253+ }
2254 return ts;
2255 }
2256
2257]]
2258}
2259