1
0
mirror of https://github.com/lua/lua.git synced 2025-01-14 05:43:00 +08:00

Some changes in default GC parameters

This commit is contained in:
Roberto Ierusalimschy 2024-10-23 17:15:06 -03:00
parent 9b01da97e3
commit 5ffcd458f0
2 changed files with 6 additions and 8 deletions

4
lgc.c
View File

@ -1675,7 +1675,7 @@ void luaC_runtilstate (lua_State *L, int state, int fast) {
*/ */
static void incstep (lua_State *L, global_State *g) { static void incstep (lua_State *L, global_State *g) {
l_mem stepsize = applygcparam(g, STEPSIZE, 100); l_mem stepsize = applygcparam(g, STEPSIZE, 100);
l_mem work2do = applygcparam(g, STEPMUL, stepsize); l_mem work2do = applygcparam(g, STEPMUL, stepsize / cast_int(sizeof(void*)));
l_mem stres; l_mem stres;
int fast = (work2do == 0); /* special case: do a full collection */ int fast = (work2do == 0); /* special case: do a full collection */
do { /* repeat until enough work */ do { /* repeat until enough work */
@ -1739,8 +1739,6 @@ static void fullinc (lua_State *L, global_State *g) {
/* finish any pending sweep phase to start a new cycle */ /* finish any pending sweep phase to start a new cycle */
luaC_runtilstate(L, GCSpause, 1); luaC_runtilstate(L, GCSpause, 1);
luaC_runtilstate(L, GCScallfin, 1); /* run up to finalizers */ luaC_runtilstate(L, GCScallfin, 1); /* run up to finalizers */
/* 'marked' must be correct after a full GC cycle */
/* lua_assert(g->GCmarked == gettotalobjs(g)); ??? */
luaC_runtilstate(L, GCSpause, 1); /* finish collection */ luaC_runtilstate(L, GCSpause, 1); /* finish collection */
setpause(g); setpause(g);
} }

10
lgc.h
View File

@ -170,7 +170,7 @@
** Minor collections will shift to major ones after LUAI_MINORMAJOR% ** Minor collections will shift to major ones after LUAI_MINORMAJOR%
** bytes become old. ** bytes become old.
*/ */
#define LUAI_MINORMAJOR 100 #define LUAI_MINORMAJOR 70
/* /*
** Major collections will shift to minor ones after a collection ** Major collections will shift to minor ones after a collection
@ -182,20 +182,20 @@
** A young (minor) collection will run after creating LUAI_GENMINORMUL% ** A young (minor) collection will run after creating LUAI_GENMINORMUL%
** new bytes. ** new bytes.
*/ */
#define LUAI_GENMINORMUL 25 #define LUAI_GENMINORMUL 20
/* incremental */ /* incremental */
/* Number of bytes must be LUAI_GCPAUSE% before starting new cycle */ /* Number of bytes must be LUAI_GCPAUSE% before starting new cycle */
#define LUAI_GCPAUSE 200 #define LUAI_GCPAUSE 250
/* /*
** Step multiplier: The collector handles LUAI_GCMUL% work units for ** Step multiplier: The collector handles LUAI_GCMUL% work units for
** each new allocated byte. (Each "work unit" corresponds roughly to ** each new allocated word. (Each "work unit" corresponds roughly to
** sweeping one object or traversing one slot.) ** sweeping one object or traversing one slot.)
*/ */
#define LUAI_GCMUL 40 #define LUAI_GCMUL 200
/* How many bytes to allocate before next GC step */ /* How many bytes to allocate before next GC step */
#define LUAI_GCSTEPSIZE (200 * sizeof(Table)) #define LUAI_GCSTEPSIZE (200 * sizeof(Table))