aboutsummaryrefslogtreecommitdiff
path: root/tools/js-optimizer.js
AgeCommit message (Collapse)Author
2012-10-27abort scanning on unfamiliar eliminator nodesAlon Zakai
2012-10-27do not scan into whileAlon Zakai
2012-10-27handle more nodes in eliminator scanningAlon Zakai
2012-10-27ignore return in eliminatorAlon Zakai
2012-10-27support seq in eliminatorAlon Zakai
2012-10-27only invalidate calls when reading a globalAlon Zakai
2012-10-26invalidate by dep in varsAlon Zakai
2012-10-26partial rewrite for v3 of eliminator aka expressionizerAlon Zakai
2012-10-26ignore previously-generated empty toplevels in eliminator, which happens ↵Alon Zakai
when we bundle passes together
2012-10-26do not emit multiple EMSCRIPTEN_GENERATED_FUNCTION markers in split js filesAlon Zakai
2012-10-26fail on trying to split up js optimizer on unGlobalizeAlon Zakai
2012-10-26eliminator todoAlon Zakai
2012-10-26be careful about tracking when there is a var multiple with a callAlon Zakai
2012-10-26invalidate call elimination when we see something it might modify (a global ↵Alon Zakai
or memory, reads and not just writes
2012-10-25eliminate (carefully) into and through ifsAlon Zakai
2012-10-25move dep invalidations clearing to correct positionAlon Zakai
2012-10-25invalidate elimination by dependencies after the current lineAlon Zakai
2012-10-25track dependencies of variables we might eliminateAlon Zakai
2012-10-25do not eliminate into the body/else of if - this is rarely important, and ↵Alon Zakai
requires much more time and complexity to handle
2012-10-25fix handling of unremovable unused varsAlon Zakai
2012-10-25variables with no uses cannot be removed if their definition has side effectsAlon Zakai
2012-10-25eliminate in if nodesAlon Zakai
2012-10-25remove var x; of completely unused vars, and restore previous test casesAlon Zakai
2012-10-25rewrite of eliminator to better approachAlon Zakai
2012-10-24note 'seq' (x,y,z) nodes as modifying control flow and invalidating eliminationAlon Zakai
2012-10-23fix eliminator bug where X[y] would take X into account for variable ↵Alon Zakai
effects, preventing optimization
2012-10-23include eliminator as js optimizer passAlon Zakai
2012-10-23remove unneeded js optimizer re-parseAlon Zakai
2012-10-20implement simplifyZeroComp js optimizer pass, not yet executedAlon Zakai
2012-09-25add workaround for older node versionsAlon Zakai
2012-09-25Support loading emscripten argument filenames with relative pathsChad Austin
2012-09-05Bitshift optimizer anticipates fns with switchesBenjamin Stover
Conflicts: AUTHORS
2012-07-06unused << >> optimization in js optimizerAlon Zakai
2012-07-04pass the eliminator the filename to avoid OS-specific issues with reading ↵Alon Zakai
from stdin using node
2012-05-17do not registerize with switches presentAlon Zakai
2012-05-16fix js optimizer bug with not emitting a ';' that lead to joined instructionsAlon Zakai
2012-05-16fix registerize bug with freeing variables from the wrong loopsAlon Zakai
2012-05-16bugfix in registerizeAlon Zakai
2012-05-16properly lock variables to loops in registerizeAlon Zakai
2012-05-15simple optimization to allow more registerization inside loopsAlon Zakai
2012-05-15refactor registerizeAlon Zakai
2012-05-15track number of assigns/modifications in registerizeAlon Zakai
2012-05-12print saved vars in registerizeAlon Zakai
2012-05-12handle multiple var defs of the same var in registerizeAlon Zakai
2012-05-11fix registerize bugsAlon Zakai
2012-05-11registerize: define all vars once up frontAlon Zakai
2012-05-11unenabled experimental registerization pass in js optimizerAlon Zakai
2012-03-31do not consider division safe for |0 removal, and add testcase 2 from issue 324Alon Zakai
2012-03-20Misc fixes for Windows.Sigmund Vik
Most of these changes have to do with how python scripts are invoked. For Linux, 'Popen([EMCC] + args)' works because the first line in emcc is '#!/usr/bin/env python'. On Windows, the python interpreter has to be explicitly invoked, e.g. 'Popen(['python', EMCC] + args)'. Note that there is no harm in explicitly invoking the python interpreter on Linux, so this works on both platforms. For Windows, execvp() behaves differently than on Linux: http://mail.python.org/pipermail/python-list/2002-July/763863.html http://msdn.microsoft.com/en-us/library/3xw6zy53.aspx This causes many strange things to happen as the parent process terminated before its children. In this change the use of execvp() has been replaced with subprocess.call(). This change also fixes some code that assumed that the path separator always is '/', but for Windows it is '\'. And where the path module can be required, we use path.normalize() and path.resolve() to check if a filename is absolute in a platform agnostic manner.
2012-03-10better handling of detection of scriptArgs and argumentsAlon Zakai