Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | Add a superclass typedef to WalkerPass to simplify overrides (#1211) | jgravelle-google | 2017-10-04 | 1 | -2/+2 | |
| | ||||||
* | clean up untaken => unreachable, as well as unnecessary named stuff in ↵ | Alon Zakai | 2017-09-06 | 1 | -1/+1 | |
| | | | | validation that was from when we differentiated reachable from unreachable breaks (#1166) | |||||
* | Return to more structured type rules for block and if (#1148) | Alon Zakai | 2017-09-05 | 1 | -2/+3 | |
| | | | | | | | | * if a block has a concrete final element (or a break with a value), then even if it has an unreachable child, keep it with that concrete type. this means we no longe allow the silly case of a block with an unreachable in the middle and a concrete as the final element while the block is unreachable - after this change, the block would have the type of the final element * if an if has a concrete element in one arm, make it have that type as a result, even if the if condition is unreachable, to parallel block * make type rules for brs and switches simpler, ignore whether they are reachable or not. whether they are dead code should not affect how they influence other types in our IR. | |||||
* | add the option to seek named breaks, not just taken breaks; refactor headers ↵ | Alon Zakai (kripken) | 2017-07-11 | 1 | -1/+1 | |
| | | | | to make this practical | |||||
* | finalize new drops in SimplifyLocals | Alon Zakai (kripken) | 2017-07-11 | 1 | -0/+2 | |
| | ||||||
* | Validate finalization (#1014) | Alon Zakai | 2017-05-18 | 1 | -0/+1 | |
| | | | | | | | * validate that types are properly finalized, when in pass-debug mode (BINARYEN_PASS_DEBUG env var): check after each pass is run that the type of each node is equal to the proper type (when finalizing it, i.e., fully recomputing the type). * fix many fuzz bugs found by that. * in particular, fix dce bugs with type changes not being fully updated during code removal. add a new TypeUpdater helper class that lets a pass update types efficiently, by the helper tracking deps between blocks and branches etc., and updating/propagating type changes only as necessary. | |||||
* | Default Walker subclasses to using Visitor<SubType> (#921) | jgravelle-google | 2017-02-23 | 1 | -4/+4 | |
| | | | | Most module walkers use PostWalker<T, Visitor<T>>, let that pattern be expressed as simply PostWalker<T> | |||||
* | Improve handling of implicit traps (#898) | Alon Zakai | 2017-02-06 | 1 | -6/+4 | |
| | | | | | | | | * add --ignore-implicit-traps option, and by default do not ignore them, to properly preserve semantics * implicit traps can be reordered, but are side effects and should not be removed * add testing for --ignore-implicit-traps | |||||
* | improve local simplication: simplify without if/block structure values ↵ | Alon Zakai | 2016-11-06 | 1 | -6/+9 | |
| | | | | before coalesce, so that coalesce can remove all copies, then do another pass of full simplification after it | |||||
* | add variants of simplify-locals with and without teeing and structural opts | Alon Zakai | 2016-11-05 | 1 | -11/+43 | |
| | ||||||
* | refactor get_local counting out of simplify-locals (#812) | Alon Zakai | 2016-10-28 | 1 | -19/+7 | |
| | ||||||
* | when simplify-locals give br_if a value, the br_if also returns it, so it ↵ | Alon Zakai | 2016-10-13 | 1 | -4/+8 | |
| | | | | must be dropped | |||||
* | fix a simplify-locals bug where we didn't notice and if already had a result ↵ | Alon Zakai | 2016-09-23 | 1 | -3/+2 | |
| | | | | value | |||||
* | when optimizing a block return value, replacing the sunk set with the value ↵ | Alon Zakai | 2016-09-14 | 1 | -5/+14 | |
| | | | | is only possible if the break is unconditional; if it is condition, we must tee the value so that if the break condition is false and we do not jump, then we have the new value in the local on the line after it | |||||
* | do a first pass in SimplifyLocals that focuses on single-use locals | Alon Zakai | 2016-09-07 | 1 | -12/+36 | |
| | ||||||
* | add drop and tee expressions | Alon Zakai | 2016-09-07 | 1 | -12/+30 | |
| | ||||||
* | Add initialization functions for passes to avoid missing pass registration ↵ | Jukka Jylänki | 2016-06-21 | 1 | -1/+3 | |
| | | | | due to linker dead code elimination. Fixes #577. | |||||
* | move function parallelism to pass and pass runner, which allows more ↵ | Alon Zakai | 2016-06-03 | 1 | -3/+5 | |
| | | | | efficient parallel execution (#564) | |||||
* | refactor walk logic into walk* and doWalk* methods, for a more regular API ↵ | Alon Zakai | 2016-05-30 | 1 | -5/+5 | |
| | | | | that is clearer where it should be overridden (#551) | |||||
* | vacuum away everything not tied down | Alon Zakai | 2016-05-19 | 1 | -2/+1 | |
| | ||||||
* | clear sinkables on unoptimizable blocks, as they have a control flow merge | Alon Zakai | 2016-05-05 | 1 | -6/+10 | |
| | ||||||
* | note defaults of switches in SimplifyLocals | Alon Zakai | 2016-05-05 | 1 | -0/+1 | |
| | ||||||
* | optimize block and if returns, by merging set_locals that flow out of them | Alon Zakai | 2016-04-24 | 1 | -72/+300 | |
| | ||||||
* | handle dead stores in SimplifyLocals | Alon Zakai | 2016-04-18 | 1 | -2/+3 | |
| | ||||||
* | remove old comments in SimplifyLocals | Alon Zakai | 2016-04-18 | 1 | -2/+1 | |
| | ||||||
* | create a UnifiedExpressionVisitor for passes that want a single visitor ↵ | Alon Zakai | 2016-04-18 | 1 | -3/+3 | |
| | | | | function, to avoid confusion with having both visit* and visitExpression in a single pass (#357) | |||||
* | use a vector for get_local counts in SimplifyLocals (#356) | Alon Zakai | 2016-04-18 | 1 | -1/+2 | |
| | ||||||
* | index locals, so that get_local and set_local have just an index, and local ↵ | Alon Zakai | 2016-04-18 | 1 | -13/+13 | |
| | | | | names are kept on the Function object (#354) | |||||
* | Function parallelism (#343) | Alon Zakai | 2016-04-15 | 1 | -2/+5 | |
| | | | | * allow traversals to mark themselves as function-parallel, in which case we run them using a thread pool. also mark some thread-safety risks (interned strings, arena allocators) with assertions they modify only on the main thread | |||||
* | drop completely unused locals in ReorderLocals | Alon Zakai | 2016-04-11 | 1 | -0/+4 | |
| | ||||||
* | continue simplifying locals while opportunities present themselves | Alon Zakai | 2016-04-11 | 1 | -23/+37 | |
| | ||||||
* | dyn_cast => dynCast | Alon Zakai | 2016-04-11 | 1 | -1/+1 | |
| | ||||||
* | remove set_locals with no remaining gets in SimplifyLocals | Alon Zakai | 2016-04-11 | 1 | -4/+51 | |
| | ||||||
* | De-recurse traversals (#333) | Alon Zakai | 2016-04-11 | 1 | -31/+41 | |
| | | | | | | | | | | | | * refactor core walking to not recurse * add a simplify-locals test * reuse parent's non-branchey scan logic in SimpleExecutionWalker, reduce code duplication * update wasm.js * rename things following comments | |||||
* | add missing checks on nested blocks in SimplifyExpressions | Alon Zakai | 2016-04-07 | 1 | -2/+7 | |
| | ||||||
* | refactor checks in SimplifyLocals | Alon Zakai | 2016-04-07 | 1 | -8/+15 | |
| | ||||||
* | handle loops in effect analyzer | Alon Zakai | 2016-04-07 | 1 | -8/+19 | |
| | ||||||
* | fix invalidation logic in SimplifyLocals, visit each node as we hit it, do ↵ | Alon Zakai | 2016-04-07 | 1 | -1/+3 | |
| | | | | not walk it to look for invalidating elements that are children, we already saw them | |||||
* | derecurse blocks helper, and use it in SimplifyLocals | Alon Zakai | 2016-04-07 | 1 | -8/+6 | |
| | ||||||
* | rewrite SimplifyLocals to use FastExecutionWalker | Alon Zakai | 2016-04-07 | 1 | -12/+71 | |
| | ||||||
* | Some cleanup. | Michael Bebenita | 2016-01-14 | 1 | -1/+1 | |
| | ||||||
* | Use LLVM style static polymorphism for WasmVisitors. | Michael Bebenita | 2016-01-13 | 1 | -2/+2 | |
| | ||||||
* | A more generic compiler pass system. | Michael Bebenita | 2016-01-13 | 1 | -1/+1 | |
| | ||||||
* | use simplify-locals by default | Alon Zakai | 2016-01-09 | 1 | -0/+1 | |
| | ||||||
* | start work on SimplifyLocals | Alon Zakai | 2016-01-09 | 1 | -0/+43 | |