aboutsummaryrefslogtreecommitdiff
path: root/tools/js-optimizer.js
AgeCommit message (Collapse)Author
2014-03-27remove stack parameter from js optimizer traverse(), to avoid overhead when ↵Alon Zakai
not needed
2014-03-27optimize away individual loop vars, even if we can't remove them allAlon Zakai
2014-03-26eliminate X=X which can happen due to eliminationAlon Zakai
2014-03-17flip a non-existent else block in simplifyIfs, if adding such a block can helpAlon Zakai
2014-03-17flip in simplifyElses if it can helpAlon Zakai
2014-03-17fuse if-elses where the relooper did not emit a label clearingAlon Zakai
2014-03-17fix else fusing when label has multiple assigns or checksAlon Zakai
2014-03-17fuse elses to remove unnecessary label settings and checks, after we ↵Alon Zakai
simplified ifs
2014-03-17don't commaify if it doesn't helpAlon Zakai
2014-03-17simplify nested ifs with identical elsesAlon Zakai
2014-03-17uncommaify between ifs that can potentially be simplifiedAlon Zakai
2014-03-17remove unnecessary code from simplifyIfsAlon Zakai
2014-03-17filter out empty blocks in simplifyIfsAlon Zakai
2014-03-17simplifyIfs js optimizer passAlon Zakai
2014-03-15don't needlessly add empty nodes in asm normalization/denormalizationAlon Zakai
2014-03-15remove empty subnodes after aggressive variable eliminationAlon Zakai
2014-03-15remove empty subnodes after vacuumAlon Zakai
2014-03-15remove empty subnodes after eliminateAlon Zakai
2014-02-23disable some outlining loggingAlon Zakai
2014-02-23add stack bump if only sp is defined but no bump is present, when outliningAlon Zakai
2014-02-21do not outline the entire stack prelude, including STACKTOP = ..Alon Zakai
2014-02-16tolerate non-asm variables in asm optimization passes, with no-op coercions ↵Alon Zakai
(x=x)
2014-02-16optimize traverseGeneratedAlon Zakai
2014-02-11optimize redundant frounds in -O3Alon Zakai
2014-02-10Handle while statements with empty bodies.Dan Gohman
When a while statement body is empty, it contains an empty block with no statement list.
2014-02-10Merge pull request #2071 from rfk/rfk/fix-test-longjmp-throw-asm3Alon Zakai
Fix asm3.test_longjmp_throw
2014-02-04do not apply de-morgan's laws on floats, nans break themAlon Zakai
2014-02-03proper fix for simplifying f32-int bitcastsAlon Zakai
2014-02-03handle fround in optimizing out of tempDoublePtrAlon Zakai
2014-02-02Simplify labelled-block handling so it works better with switch statements.Ryan Kelly
2014-02-02Handle non-breaking case bodies in switch statement.Ryan Kelly
These don't actually flow through to the next case, but we have to make sure they're properly closed in order to keep our invariants in order.
2014-01-31Teach buildFlowGraph about functions that are known to always throw.Ryan Kelly
It can treat calls to these functions like a jump to function exit, allowing for more accurate tracking of dead junctions.
2014-01-31Don't let buildFlowGraph return to a junction if it's known to be unreachable.Ryan Kelly
2014-01-31Add return-type tracking to normalizeAsm/denormlizeAsmRyan Kelly
2014-01-28Fix assertion that all switch-cases break.Ryan Kelly
2014-01-23Add TODO about more permissive label handling in registerizeHarderRyan Kelly
2014-01-23Simplify handling of switch statements in registerizeHarder.Ryan Kelly
It now assumes they're of the very restricted for that's actually produced by emscripten, which both simplified the code and uncovered opportunities for further register reduction in a testcase.
2014-01-23Reduce memory usage when assigning registers in a block.Ryan Kelly
Rather than pre-calculating liveness states and then processing nodes in execution order, we process nodes in reverse execution order and use the liveness info implicit in this traversal. Names are assigned a register when they're used for the first time, and the register is freed when we reach an assignment.
2014-01-21assign to null to clear a local variable, avoid deleteAlon Zakai
2014-01-21fix typoAlon Zakai
2014-01-21avoid nonstandard use of spliceAlon Zakai
2014-01-21rename a variable to our conventionsAlon Zakai
2014-01-21Registerize based on full liveness analysis.Ryan Kelly
This does a much-more-expensive but much-more-thorough registerization pass based a live-variable analysis for each function. azakai: perform this on -O3 and above
2014-01-21Minify loop labels while we're minifying local names.Ryan Kelly
2014-01-20Fix a param-handling bug in normalizeAsmRyan Kelly
2014-01-17handle unsigned reads in safe heapAlon Zakai
2014-01-17use double for float arguments to safe heapAlon Zakai
2014-01-16enable a form of safe heap in asm, using js optimizer pass to ensure full ↵Alon Zakai
coverage and support for fastcomp
2014-01-15add todoAlon Zakai
2014-01-15Merge pull request #2016 from rfk/rfk/minify-names-separatelyAlon Zakai
Split name-minification into a separate pass from registerization.