New option "setparms" for 'collectgarbage'

The generational mode also uses the parameters for the incremental
mode in its major collections, so it should be easy to change those
parameters without having to change the GC mode.
This commit is contained in:
Roberto Ierusalimschy committed 2023-12-22 14:48:07 -03:00
1 parent ad0ea7813b
commit e2cc179454
13 files changed
+163 -78

No files matched your search

+7 -4
View File
@@ -27,17 +27,20 @@ end
-- test weird parameters to 'collectgarbage'
do
collectgarbage("incremental")
local opause = collectgarbage("setparam", "pause", 100)
local ostepmul = collectgarbage("setparam", "stepmul", 100)
local t = {0, 2, 10, 90, 500, 5000, 30000, 0x7ffffffe}
for i = 1, #t do
local p = t[i]
collectgarbage("setparam", "pause", t[i])
for j = 1, #t do
local m = t[j]
collectgarbage("incremental", p, m)
collectgarbage("setparam", "stepmul", t[j])
collectgarbage("step")
end
end
-- restore original parameters
collectgarbage("incremental", 200, 300)
collectgarbage("setparam", "pause", opause)
collectgarbage("setparam", "stepmul", ostepmul)
collectgarbage()
end
+3 -2
View File
@@ -163,14 +163,15 @@ assert(collectgarbage'isrunning')
do print"testing stop-the-world collection"
collectgarbage("incremental", nil, 0)
local step = collectgarbage("setparam", "stepsize", 0);
collectgarbage("incremental")
-- each step does a complete cycle
assert(collectgarbage("step"))
assert(collectgarbage("step"))
-- back to default value
collectgarbage("incremental", nil, 200)
collectgarbage("setparam", "stepsize", step);
end
collectgarbage(oldmode)