diff options
author | Alon Zakai <alonzakai@gmail.com> | 2013-03-08 12:23:18 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2013-03-08 12:23:18 -0800 |
commit | 52b9d04de89f922d9499415f2fe04f8ff6375e9f (patch) | |
tree | e11266922c7df9e0199153550a3a9524729b76f6 /tools/js_optimizer.py | |
parent | ca11fd78eb643ab5b28dac2328fb9012dccd1f25 (diff) |
fix global minifying
Diffstat (limited to 'tools/js_optimizer.py')
-rw-r--r-- | tools/js_optimizer.py | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/tools/js_optimizer.py b/tools/js_optimizer.py index a82dcb9b..b7d342d2 100644 --- a/tools/js_optimizer.py +++ b/tools/js_optimizer.py @@ -26,12 +26,12 @@ class Minifier: during registerize perform minification of locals. ''' - def __init__(self, globs): + def __init__(self): # Create list of valid short names MAX_NAMES = 200#60000 INVALID_2 = set(['do', 'if', 'in']) - INVALID_3 = set(['for', 'new', 'try', 'var']) + INVALID_3 = set(['for', 'new', 'try', 'var', 'env']) self.names = [] init_possibles = string.ascii_letters + '_$' @@ -52,14 +52,14 @@ class Minifier: if curr not in INVALID_3: self.names.append(curr) #print >> sys.stderr, self.names + self.globs = {} + + def add_glob(self, glob): # Minify the globals (initials - asm imports, etc. - and functions) # TODO: find how many times they are used and do this more optimally - - self.globs = {} - i = 0 - for g in globs: - self.globs[g] = self.names[i] - i += 1 + ret = self.names[len(self.globs)] + self.globs[glob] = ret + return ret def serialize(self): return json.dumps({ @@ -182,14 +182,19 @@ def run_on_js(filename, passes, js_engine, jcache): assert asm_marker > 0 asm_funcs = pre.find('function ', asm_marker) assert asm_funcs > asm_marker - globs = [] + minifier = Minifier() + new_vars = '' for vardef in re.findall(r'var [^;]+;', pre[asm_marker:asm_funcs]): vs = vardef[4:-1].split(',') for v in vs: - v = v.split('=')[0].strip() - globs.append(v) - minify_info = Minifier(globs + list(generated)).serialize() - #print >> sys.stderr, 'm', minify_info + name, value = map(lambda x: x.strip(), v.split('=')) + new_vars += 'var ' + minifier.add_glob(name) + '=' + value + ';' + for g in generated: + minifier.add_glob(g) + minify_info = minifier.serialize() + minifier = None + pre = pre[:asm_marker+11] + new_vars + pre[asm_funcs:] + print >> sys.stderr, 'm', minify_info if len(chunks) > 0: def write_chunk(chunk, i): |