aboutsummaryrefslogtreecommitdiffstats
path: root/lib/LuaJIT/src/jit/zone.lua
diff options
context:
space:
mode:
authorAndy Belle-Isle <drumsetmonkey@gmail.com>2019-08-25 16:39:02 -0400
committerAndy Belle-Isle <drumsetmonkey@gmail.com>2019-08-25 16:39:02 -0400
commitbb283f4581ac07a4dd75325c4343d7f28b1ff376 (patch)
treef3892f8b77177149ae0294e7241d2ecaf58b64a6 /lib/LuaJIT/src/jit/zone.lua
parentd48436bbf5032484ff7d9c2667a63672e306ca18 (diff)
Fixed LuaJIT files
Diffstat (limited to 'lib/LuaJIT/src/jit/zone.lua')
-rw-r--r--lib/LuaJIT/src/jit/zone.lua45
1 files changed, 45 insertions, 0 deletions
diff --git a/lib/LuaJIT/src/jit/zone.lua b/lib/LuaJIT/src/jit/zone.lua
new file mode 100644
index 0000000..fa702c4
--- /dev/null
+++ b/lib/LuaJIT/src/jit/zone.lua
@@ -0,0 +1,45 @@
+----------------------------------------------------------------------------
+-- LuaJIT profiler zones.
+--
+-- Copyright (C) 2005-2017 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
+})
+