aboutsummaryrefslogtreecommitdiff
path: root/tools/js-optimizer.js
AgeCommit message (Collapse)Author
2014-05-20Fix elimination of conditional expressions in registerizeHarder.Ryan Kelly
Previously, attempts to eliminate a side-effect-free conditional expression would corrupt internal block state, because the sub-nodes belong to a different block than the one containing the expression. This fixes the problem by not splitting side-effect free conditionals across multiple blocks.
2014-05-19add conditional to hasSideEffectsAlon Zakai
2014-05-19fix emitsBoolean handling of conditional, and add handling of numAlon Zakai
2014-05-19do not move around loop variable incrementations when the helper is used ↵Alon Zakai
outside the loop
2014-05-18fix looptemp replacements when there is a continue with a phi of the loop ↵Alon Zakai
variable
2014-05-16merge loop and helper variables when their use ranges do not overlapAlon Zakai
2014-05-16optimize loop vars even if there is some code (like a phi) in the if block ↵Alon Zakai
where the loop break is, if it does not interfere
2014-05-13conditionalize in all boolean-emitting expressionsAlon Zakai
2014-05-13update heuristicAlon Zakai
2014-05-13conditionalize when it can avoid costly side-effect free codeAlon Zakai
2014-05-03emit a global const for Math_fround(0) to avoid function call overheads in ↵Alon Zakai
the fround polyfill
2014-04-24check function table masks in safe heap modeAlon Zakai
2014-04-17eliminate loop vars even if used after increment, by adding another helper ↵Alon Zakai
(which has less overhead than the previous helper)
2014-04-09fix outlinings of return double; fixes #2278Alon Zakai
2014-04-08do not eliminate loop vars if there are non-loop vars in the else that are ↵Alon Zakai
influenced by the loop var or the helper
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