diff options
Diffstat (limited to 'libs/luajit-cmake/luajit/src/jit/zone.lua')
-rw-r--r-- | libs/luajit-cmake/luajit/src/jit/zone.lua | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/libs/luajit-cmake/luajit/src/jit/zone.lua b/libs/luajit-cmake/luajit/src/jit/zone.lua new file mode 100644 index 0000000..1308cb7 --- /dev/null +++ b/libs/luajit-cmake/luajit/src/jit/zone.lua @@ -0,0 +1,45 @@ +---------------------------------------------------------------------------- +-- LuaJIT profiler zones. +-- +-- Copyright (C) 2005-2022 Mike Pall. All rights reserved. +-- Released under the MIT license. See Copyright Notice in luajit.h +---------------------------------------------------------------------------- +-- +-- This module implements a simple hierarchical zone model. +-- +-- Example usage: +-- +-- local zone = require("jit.zone") +-- zone("AI") +-- ... +-- zone("A*") +-- ... +-- print(zone:get()) --> "A*" +-- ... +-- zone() +-- ... +-- print(zone:get()) --> "AI" +-- ... +-- zone() +-- +---------------------------------------------------------------------------- + +local remove = table.remove + +return setmetatable({ + flush = function(t) + for i=#t,1,-1 do t[i] = nil end + end, + get = function(t) + return t[#t] + end +}, { + __call = function(t, zone) + if zone then + t[#t+1] = zone + else + return (assert(remove(t), "empty zone stack")) + end + end +}) + |