diff options
Diffstat (limited to 'zig-lua/lua-5.4.7/testes/tracegc.lua')
| -rw-r--r-- | zig-lua/lua-5.4.7/testes/tracegc.lua | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/zig-lua/lua-5.4.7/testes/tracegc.lua b/zig-lua/lua-5.4.7/testes/tracegc.lua new file mode 100644 index 0000000..9c5c1b3 --- /dev/null +++ b/zig-lua/lua-5.4.7/testes/tracegc.lua @@ -0,0 +1,40 @@ +-- track collections + +local M = {} + +-- import list +local setmetatable, stderr, collectgarbage = + setmetatable, io.stderr, collectgarbage + +_ENV = nil + +local active = false + + +-- each time a table is collected, remark it for finalization on next +-- cycle +local mt = {} +function mt.__gc (o) + stderr:write'.' -- mark progress + if active then + setmetatable(o, mt) -- remark object for finalization + end +end + + +function M.start () + if not active then + active = true + setmetatable({}, mt) -- create initial object + end +end + + +function M.stop () + if active then + active = false + collectgarbage() -- call finalizer for the last time + end +end + +return M |
