summaryrefslogtreecommitdiff
path: root/src/jit
diff options
context:
space:
mode:
authorMike Pall <mike>2013-09-02 01:55:20 +0200
committerMike Pall <mike>2013-09-02 01:55:20 +0200
commitb186fb835efb82757b973db224ec3be39d0ad501 (patch)
treece594240025d4b4a2301413ccb530a55002856a4 /src/jit
parent8a9519a5f442726bafa954f5beecf67b0df3cf45 (diff)
downloadluajit-b186fb835efb82757b973db224ec3be39d0ad501.tar.gz
luajit-b186fb835efb82757b973db224ec3be39d0ad501.tar.bz2
luajit-b186fb835efb82757b973db224ec3be39d0ad501.zip
Add low-overhead profiler. Part 2: low-level Lua API.
Diffstat (limited to 'src/jit')
-rw-r--r--src/jit/zone.lua41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/jit/zone.lua b/src/jit/zone.lua
new file mode 100644
index 00000000..da2eccb0
--- /dev/null
+++ b/src/jit/zone.lua
@@ -0,0 +1,41 @@
1----------------------------------------------------------------------------
2-- LuaJIT profiler zones.
3--
4-- Copyright (C) 2005-2013 Mike Pall. All rights reserved.
5-- Released under the MIT license. See Copyright Notice in luajit.h
6----------------------------------------------------------------------------
7--
8-- This module implements a simple hierarchical zone model.
9--
10-- Example usage:
11--
12-- local zone = require("jit.zone")
13-- zone("AI")
14-- ...
15-- zone("A*")
16-- ...
17-- print(zone:get()) --> "A*"
18-- ...
19-- zone()
20-- ...
21-- print(zone:get()) --> "AI"
22-- ...
23-- zone()
24--
25----------------------------------------------------------------------------
26
27local remove = table.remove
28
29return setmetatable({
30 flush = function(t)
31 for i=#t,1,-1 do t[i] = nil end
32 end,
33 get = function(t)
34 return t[#t]
35 end
36}, {
37 __call = function(t, zone)
38 if zone then t[#t+1] = zone else return assert(remove(t)) end
39 end
40})
41