Software /
code /
prosody
Annotate
util/gc.lua @ 12532:8e4033213c62
luacheck: Ignore new warning about using variables prefixed with '_'
luacheck 0.26 considers the _ prefix as a hint that the variable or
argument is unused, then warns if they are used despite this.
We have several places where this prefix is used to avoid shadowing
another similarly named variable, resulting in many instances of this
warning.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Mon, 30 May 2022 16:49:52 +0200 |
parent | 11431:4874b54af344 |
child | 12975:d10957394a3c |
rev | line source |
---|---|
10933
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
1 local set = require "util.set"; |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
2 |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
3 local known_options = { |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
4 incremental = set.new { "mode", "threshold", "speed", "step_size" }; |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
5 generational = set.new { "mode", "minor_threshold", "major_threshold" }; |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
6 }; |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
7 |
11431
4874b54af344
util.gc: Fix check for Lua 5.4
Kim Alvefur <zash@zash.se>
parents:
10935
diff
changeset
|
8 if _VERSION ~= "Lua 5.4" then |
10933
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
9 known_options.generational = nil; |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
10 known_options.incremental:remove("step_size"); |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
11 end |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
13 local function configure(user, defaults) |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
14 local mode = user.mode or defaults.mode or "incremental"; |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
15 if not known_options[mode] then |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
16 return nil, "GC mode not supported on ".._VERSION..": "..mode; |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 end |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
18 |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
19 for k, v in pairs(user) do |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
20 if not known_options[mode]:contains(k) then |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 return nil, "Unknown GC parameter: "..k; |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
22 elseif k ~= "mode" and type(v) ~= "number" then |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
23 return nil, "parameter '"..k.."' should be a number"; |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
24 end |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
25 end |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
26 |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
27 if mode == "incremental" then |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
28 if _VERSION == "Lua 5.4" then |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
29 collectgarbage(mode, |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
30 user.threshold or defaults.threshold, |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
31 user.speed or defaults.speed, |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
32 user.step_size or defaults.step_size |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
33 ); |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
34 else |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
35 collectgarbage("setpause", user.threshold or defaults.threshold); |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
36 collectgarbage("setstepmul", user.speed or defaults.speed); |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
37 end |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
38 elseif mode == "generational" then |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
39 collectgarbage(mode, |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
40 user.minor_threshold or defaults.minor_threshold, |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
41 user.major_threshold or defaults.major_threshold |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
42 ); |
10935
2d57c49bfa12
util.gc: Linter fixes [luacheck]
Matthew Wild <mwild1@gmail.com>
parents:
10933
diff
changeset
|
43 end |
10933
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
44 return true; |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
45 end |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
46 |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
47 return { |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
48 configure = configure; |
f59bc81245b3
util.gc: New module for configuring the Lua garbage collector
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
49 }; |