mirror of
https://github.com/lua/lua.git
synced 2025-02-04 06:13:04 +08:00
Detail (debugging aid)
When compiling with option HARDMEMTESTS, every creation of a new key in a table forces an emergency GC.
This commit is contained in:
parent
5894ca7b95
commit
1ec251e091
8
lgc.h
8
lgc.h
@ -224,15 +224,15 @@
|
||||
*/
|
||||
|
||||
#if !defined(HARDMEMTESTS)
|
||||
#define condchangemem(L,pre,pos) ((void)0)
|
||||
#define condchangemem(L,pre,pos,emg) ((void)0)
|
||||
#else
|
||||
#define condchangemem(L,pre,pos) \
|
||||
{ if (gcrunning(G(L))) { pre; luaC_fullgc(L, 0); pos; } }
|
||||
#define condchangemem(L,pre,pos,emg) \
|
||||
{ if (gcrunning(G(L))) { pre; luaC_fullgc(L, emg); pos; } }
|
||||
#endif
|
||||
|
||||
#define luaC_condGC(L,pre,pos) \
|
||||
{ if (G(L)->GCdebt <= 0) { pre; luaC_step(L); pos;}; \
|
||||
condchangemem(L,pre,pos); }
|
||||
condchangemem(L,pre,pos,0); }
|
||||
|
||||
/* more often than not, 'pre'/'pos' are empty */
|
||||
#define luaC_checkGC(L) luaC_condGC(L,(void)0,(void)0)
|
||||
|
2
ltable.c
2
ltable.c
@ -910,6 +910,8 @@ static void luaH_newkey (lua_State *L, Table *t, const TValue *key,
|
||||
newcheckedkey(t, key, value); /* insert key in grown table */
|
||||
}
|
||||
luaC_barrierback(L, obj2gco(t), key);
|
||||
/* for debugging only: any new key may force an emergency collection */
|
||||
condchangemem(L, (void)0, (void)0, 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user