aboutsummaryrefslogtreecommitdiff
path: root/tools/profile_used.py
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2014-03-06 18:24:31 -0800
committerAlon Zakai <alonzakai@gmail.com>2014-03-06 18:24:31 -0800
commit1c8d54828f849956ddbef0b35222a47553e8a7cc (patch)
tree77fbf910e90311b74b452e1ba36e7a998a3f1159 /tools/profile_used.py
parentf60959da5665054b903c3612878e717cf1249e58 (diff)
some primitive profiling tools
Diffstat (limited to 'tools/profile_used.py')
-rw-r--r--tools/profile_used.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/tools/profile_used.py b/tools/profile_used.py
new file mode 100644
index 00000000..b954f7d1
--- /dev/null
+++ b/tools/profile_used.py
@@ -0,0 +1,28 @@
+# Run, then execute
+'''
+dump(JSON.stringify(usedFunctions))
+'''
+# then strip with profile_strip.py
+
+import sys
+
+print 'var usedFunctions = {};'
+#print "function getFuncName(f) { return f.toString().split(' ')[1].split('(')[0] }"
+print "function getFuncName(f) { return f.name }"
+
+last = []
+
+for line in open(sys.argv[1]).readlines():
+ line = line.strip()
+ print line
+ if line.startswith('function _') and line.endswith(('){', ') {')):
+ name = line.split(' ')[1].split('(')[0]
+ print 'usedFunctions["%s"] = 1;' % name
+ if line.startswith('var FUNCTION_TABLE'):
+ name = line.split(' ')[1].split('=')[0]
+ last += ['for (var i = 0; i < %s.length; i++) if (typeof %s[i] === "function") usedFunctions[getFuncName(%s[i])] = 1;' % (name, name, name)]
+ if len(last) > 0 and line.endswith(';'):
+ for l in last:
+ print l
+ last = []
+