summaryrefslogtreecommitdiff
path: root/libs/luajit-cmake/luajit/src/jit/zone.lua
diff options
context:
space:
mode:
Diffstat (limited to 'libs/luajit-cmake/luajit/src/jit/zone.lua')
-rw-r--r--libs/luajit-cmake/luajit/src/jit/zone.lua45
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
+})
+