From 12b6f610b0f1b4157c04f0db264f1f1d0634709b Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Wed, 27 Dec 2023 12:09:11 -0300 Subject: Several tweaks in the garbage collector - back with step size in collectgarbage("step") - adjustments in defaults for some GC parameters - adjustments in 'luaO_codeparam' --- testes/files.lua | 2 ++ testes/gc.lua | 29 ++++++++++++++++++++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) (limited to 'testes') diff --git a/testes/files.lua b/testes/files.lua index 2582406f..4f925f50 100644 --- a/testes/files.lua +++ b/testes/files.lua @@ -74,6 +74,8 @@ io.input(io.stdin); io.output(io.stdout); os.remove(file) assert(not loadfile(file)) +-- Lua code cannot use chunks with fixed buffers +checkerr("invalid mode", load, "", "", "B") checkerr("", dofile, file) assert(not io.open(file)) io.output(file) diff --git a/testes/gc.lua b/testes/gc.lua index 8bacffa0..c26de406 100644 --- a/testes/gc.lua +++ b/testes/gc.lua @@ -35,7 +35,7 @@ do collectgarbage("setparam", "pause", t[i]) for j = 1, #t do collectgarbage("setparam", "stepmul", t[j]) - collectgarbage("step") + collectgarbage("step", t[j]) end end -- restore original parameters @@ -45,6 +45,33 @@ do end +-- +-- test the "size" of basic GC steps (whatever they mean...) +-- +do print("steps") + + local function dosteps (siz) + collectgarbage() + local a = {} + for i=1,100 do a[i] = {{}}; local b = {} end + local x = gcinfo() + local i = 0 + repeat -- do steps until it completes a collection cycle + i = i+1 + until collectgarbage("step", siz) + assert(gcinfo() < x) + return i -- number of steps + end + + collectgarbage"stop" + + if not _port then + assert(dosteps(10) < dosteps(2)) + end + +end + + _G["while"] = 234 -- cgit v1.2.3-55-g6feb