Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Get wasm2asm building again (#1107) | Thomas Lively | 2017-08-02 | 8 | -109/+916 |
| | | | | | | | | | | | | | | | | | | * Get wasm2asm building again Updates CMakeLists.txt to have wasm2asm built by default, updates wasm2asm.h to account for recent interface changes, and restores JSPrinter functionality. * Implement splice for array values * Clean up wasm2asm testing * Print semicolons after statements in blocks * Cleanups and semicolons for condition arms * Prettify semicolon emission | ||||
* | fix off-by-one error in clz/ctz/popcount used bits computation | Alon Zakai | 2017-08-01 | 1 | -2/+2 |
| | |||||
* | fix proper wasm emitting of untaken br_tables | Alon Zakai | 2017-08-01 | 1 | -1/+9 |
| | |||||
* | use effective shifts in more places in optimize-instructions | Alon Zakai (kripken) | 2017-08-01 | 3 | -7/+8 |
| | |||||
* | Merge remote-tracking branch 'origin/master' into fuzz | Alon Zakai (kripken) | 2017-07-31 | 1 | -1/+33 |
|\ | |||||
| * | Polymophic stack support (#1117) | Alon Zakai | 2017-07-31 | 1 | -1/+33 |
| | | | | | | | | | | | | | | Emit valid wasm binaries even for corner cases of unreachable code. * emit an unreachable after a node that pushes a value that has unreachable type (where wasm type checking would have pushed a concrete type) * conversely, as a hack, emulate the wasm polymorphic stack mode by not emptying the stack when it has one element and that element is unreachable. this lets further pops work (all returning an unreachable element) | ||||
* | | review comments | Alon Zakai (kripken) | 2017-07-31 | 3 | -11/+11 |
| | | |||||
* | | handle squared shifts of an unreachable | Alon Zakai (kripken) | 2017-07-31 | 1 | -2/+2 |
| | | |||||
* | | don't remove values from breaks if the values have side effects | Alon Zakai (kripken) | 2017-07-30 | 1 | -11/+23 |
| | | |||||
* | | fix optimizing two shifts into one; if the number of effective shifts ↵ | Alon Zakai (kripken) | 2017-07-30 | 3 | -14/+41 |
| | | | | | | | | overflows, it is not vali to just add them | ||||
* | | do not swap elements in conditionalizeExpensiveOnBitwise if they invalidate ↵ | Alon Zakai (kripken) | 2017-07-29 | 1 | -6/+9 |
| | | | | | | | | each other - it is not enough to check side effects, we must check the interaction as well | ||||
* | | fix binary emitting of untaken branches, and also handle reading of ↵ | Alon Zakai (kripken) | 2017-07-29 | 1 | -3/+10 |
| | | | | | | | | unreachable stacky code which may introduce concrete elements in non-final block positoins | ||||
* | | refactor effective shift size computation | Alon Zakai | 2017-07-29 | 2 | -3/+14 |
| | | |||||
* | | fix shl shift computation in getMaxBits | Alon Zakai | 2017-07-29 | 1 | -1/+1 |
| | | |||||
* | | fix shift computation in getMaxBits - in wasm only the lower 5 bits matter ↵ | Alon Zakai | 2017-07-29 | 1 | -2/+2 |
| | | | | | | | | for a 32-bit shift | ||||
* | | do not combine a load/store offset with a constant pointer if it would wrap ↵ | Alon Zakai (kripken) | 2017-07-29 | 1 | -2/+9 |
|/ | | | | a negative value to a positive one, as trapping is tricky | ||||
* | fix import type detection of calls in comma operators; when the parent is a ↵ | Alon Zakai | 2017-07-27 | 1 | -7/+11 |
| | | | | comma, it can't be a coersion (or that would have been the parent), so there is no coercion, so the result type is none (#1115) | ||||
* | Merge pull request #1114 from WebAssembly/fuzz | Alon Zakai | 2017-07-27 | 2 | -2/+4 |
|\ | | | | | Fuzz fixes | ||||
| * | when finalizing a block in MergeBlocks, use its type, so that we don't need ↵ | Alon Zakai | 2017-07-24 | 1 | -1/+1 |
| | | | | | | | | to consider type changes for its parent (changing it from a forced i32 to an unreachable might mean the parent needs to become unreachable too) | ||||
| * | ignore untaken branches in determining block type | Alon Zakai | 2017-07-22 | 1 | -1/+3 |
| | | |||||
* | | fix asm2wasm wasm-only i64 switches with a large (>32 bit) offset #1109 (#1111) | Alon Zakai | 2017-07-26 | 1 | -1/+31 |
|/ | |||||
* | Optimizer support for atomic instructions (#1094) | Derek Schuff | 2017-07-21 | 9 | -75/+155 |
| | | | | | | * Teach EffectAnalyzer not to reorder atomics wrt other memory operations. * Teach EffectAnalyzer not to reorder host operations with memory operations * Teach various passes about the operands of AtomicRMW and AtomicCmpxchg * Factor out some functions in DeadCodeElimination and MergeBlocks | ||||
* | fix f32 frem in asm2wasm #1105 (#1106) | Alon Zakai | 2017-07-20 | 1 | -33/+20 |
| | |||||
* | improve WasmValidator::validateMemBytes, check for unreasonable sizes even ↵ | Alon Zakai | 2017-07-19 | 1 | -6/+6 |
| | | | | type is unreachable (#1102) | ||||
* | Merge pull request #1100 from WebAssembly/fuzz-4 | Alon Zakai | 2017-07-18 | 4 | -25/+38 |
|\ | | | | | Yet more fuzz fixes | ||||
| * | fix off-by-one in assertion in optimize-instructions | Alon Zakai | 2017-07-17 | 1 | -1/+1 |
| | | |||||
| * | fix vacuum bug on nop'ing an if whose body has brs that cause type changes ↵ | Alon Zakai | 2017-07-17 | 1 | -0/+1 |
| | | | | | | | | when removed | ||||
| * | add missing finalizations in removeUnusedBrs, when we change an if side and ↵ | Alon Zakai | 2017-07-17 | 1 | -0/+6 |
| | | | | | | | | its outer block, we need to finalize the if first and then the block containing it | ||||
| * | fix blockifyMerge logic - it needs to not skip code in the block we merge ↵ | Alon Zakai | 2017-07-17 | 2 | -24/+30 |
| | | | | | | | | to. since that's a fairly specific functionality needed in removeUnusedBrs, move it to there | ||||
* | | Fix wasm::read_file() to read correctly sized input strings in text mode. ↵ | juj | 2017-07-18 | 1 | -0/+6 |
| | | | | | | | | (#1088) | ||||
* | | Merge pull request #1095 from WebAssembly/fuzz-3 | Alon Zakai | 2017-07-18 | 9 | -23/+87 |
|\| | | | | | More fuzz fixes | ||||
| * | fix merge-blocks logic in call, call_indirect, select, we need to avoid any ↵ | Alon Zakai (kripken) | 2017-07-14 | 2 | -7/+21 |
| | | | | | | | | danger of moving something past a side effect ; also fix an asm2wasm bug with call_indirect fixups; the call target may be a block, which we need to look through | ||||
| * | handle an unreachable block with a reachable final element in merge-blocks | Alon Zakai (kripken) | 2017-07-14 | 1 | -0/+9 |
| | | |||||
| * | when removing an if-copy in coalesce-locals, if it's a tee, we do still need ↵ | Alon Zakai (kripken) | 2017-07-13 | 1 | -1/+3 |
| | | | | | | | | the get in that arm. only when it is not a tee can we remove that arm and make the if-else into an if | ||||
| * | fix validation of memBytes, if the load type is unreachable, we can't and ↵ | Alon Zakai (kripken) | 2017-07-13 | 2 | -3/+6 |
| | | | | | | | | shouldn't try to validate | ||||
| * | note changes when removing an if body in vacuum | Alon Zakai (kripken) | 2017-07-13 | 1 | -0/+4 |
| | | |||||
| * | optimize shifts of 0 | Alon Zakai | 2017-07-13 | 1 | -0/+6 |
| | | |||||
| * | zero shifts are not sign-extends | Alon Zakai | 2017-07-13 | 1 | -10/+14 |
| | | |||||
| * | handle an unreachable condition properly in vacuum if simplification | Alon Zakai (kripken) | 2017-07-13 | 1 | -0/+6 |
| | | |||||
| * | fix handling of an if in a tee without an else, in coalesce-locals | Alon Zakai (kripken) | 2017-07-13 | 1 | -1/+3 |
| | | |||||
| * | infinite loops have side effects | Alon Zakai (kripken) | 2017-07-13 | 1 | -1/+15 |
| | | |||||
* | | Fix wrong name in --help output (#1099) | Alan Mimms | 2017-07-17 | 1 | -1/+1 |
| | | |||||
* | | Validation for AtomicRMW and cmpxchg (#1092) | Derek Schuff | 2017-07-14 | 2 | -10/+37 |
|/ | | | | Also fix cases where fail() had the arguments backwards. Wasn't an error because lol templates. Also fix printModuleComponent template to SFINAE on Expression* so we properly get the specialized version. | ||||
* | Merge pull request #1087 from WebAssembly/fuzz-2 | Alon Zakai | 2017-07-12 | 23 | -293/+405 |
|\ | | | | | Fuzz fixes | ||||
| * | fix handling of unreachable br values in merge-blocks | Alon Zakai (kripken) | 2017-07-11 | 1 | -1/+7 |
| | | |||||
| * | fix coalesce-locals handling of set/tee local of an unreachable; we still ↵ | Alon Zakai (kripken) | 2017-07-11 | 1 | -2/+6 |
| | | | | | | | | need the value, as it may do things | ||||
| * | fix block removal in remove-unused-brs, even if not taken, if named, we must ↵ | Alon Zakai (kripken) | 2017-07-11 | 1 | -2/+2 |
| | | | | | | | | preserve it | ||||
| * | changing a set to a tee or vice versa needs to take into account the value ↵ | Alon Zakai (kripken) | 2017-07-11 | 2 | -1/+2 |
| | | | | | | | | may be unreachable | ||||
| * | handle unary and binary nodes that have implicit traps in vacuum | Alon Zakai (kripken) | 2017-07-11 | 1 | -1/+12 |
| | | |||||
| * | fix Const finalization and use it properly in br finalization in Precompute | Alon Zakai (kripken) | 2017-07-11 | 3 | -1/+10 |
| | |