forked from emscripten-core/emscripten
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprofile_stripper.py
43 lines (33 loc) · 1002 Bytes
/
profile_stripper.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# See profile_used.py
#
# profile file, js file
import sys, json
used = json.loads(open(sys.argv[1]).read())
show = True
in_table = False
for orig in open(sys.argv[2]).readlines():
line = orig.strip()
if orig.startswith('function _') and line.endswith(('){', ') {')):
name = line.split(' ')[1].split('(')[0]
if name.startswith('_') and not used.get(name):
#print >> sys.stderr, 'remove', name
show = False
if line.startswith('var FUNCTION_TABLE'):
in_table = True
if in_table:
start = 0
if 'var ' in line:
start = line.index('[')+1
end = len(line)
if ']' in line:
end = line.index(']')
contents = line[start:end]
fixed = map(lambda name: '"' + name + '"' if not used.get(name) else name, contents.split(','))
print (line[:start] + ','.join(fixed) + line[end:]).replace('""', '')
else:
if show:
print orig,
if orig.startswith('}'):
show = True
if in_table and line.endswith(';'):
in_table = False