summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Optimizer support for atomic instructions (#1094)Derek Schuff2017-07-2113-77/+414
| | | | | | * 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 Zakai2017-07-208-34/+126
|
* Set stack size on MinGW to match the 8MB that is set for Visual Studio. (#1103)juj2017-07-191-0/+1
|
* improve WasmValidator::validateMemBytes, check for unreasonable sizes even ↵Alon Zakai2017-07-191-6/+6
| | | | type is unreachable (#1102)
* Merge pull request #1100 from WebAssembly/fuzz-4Alon Zakai2017-07-1812-33/+180
|\ | | | | Yet more fuzz fixes
| * fix off-by-one in assertion in optimize-instructionsAlon Zakai2017-07-173-1/+30
| |
| * fix vacuum bug on nop'ing an if whose body has brs that cause type changes ↵Alon Zakai2017-07-173-0/+28
| | | | | | | | when removed
| * add missing finalizations in removeUnusedBrs, when we change an if side and ↵Alon Zakai2017-07-171-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 Zakai2017-07-176-32/+116
| | | | | | | | 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. ↵juj2017-07-181-0/+6
| | | | | | | | (#1088)
* | Merge pull request #1095 from WebAssembly/fuzz-3Alon Zakai2017-07-1828-83/+695
|\| | | | | More fuzz fixes
| * fix merge-blocks logic in call, call_indirect, select, we need to avoid any ↵Alon Zakai (kripken)2017-07-1411-60/+307
| | | | | | | | 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-blocksAlon Zakai (kripken)2017-07-143-0/+23
| |
| * when removing an if-copy in coalesce-locals, if it's a tee, we do still need ↵Alon Zakai (kripken)2017-07-133-1/+64
| | | | | | | | 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-132-3/+6
| | | | | | | | shouldn't try to validate
| * note changes when removing an if body in vacuumAlon Zakai (kripken)2017-07-133-0/+44
| |
| * optimize shifts of 0Alon Zakai2017-07-133-15/+44
| |
| * zero shifts are not sign-extendsAlon Zakai2017-07-133-10/+80
| |
| * handle an unreachable condition properly in vacuum if simplificationAlon Zakai (kripken)2017-07-133-0/+38
| |
| * fix handling of an if in a tee without an else, in coalesce-localsAlon Zakai (kripken)2017-07-133-1/+25
| |
| * infinite loops have side effectsAlon Zakai (kripken)2017-07-135-8/+79
| |
* | Fix wrong name in --help output (#1099)Alan Mimms2017-07-171-1/+1
| |
* | Validation for AtomicRMW and cmpxchg (#1092)Derek Schuff2017-07-146-30/+57
| | | | | | | | 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.
* | Added wasm-validator.cpp to build-js.sh (#1091)Daniel Wirtz2017-07-131-0/+1
|/
* Merge pull request #1087 from WebAssembly/fuzz-2Alon Zakai2017-07-1245-370/+1254
|\ | | | | Fuzz fixes
| * fix handling of unreachable br values in merge-blocksAlon Zakai (kripken)2017-07-113-1/+35
| |
| * fix coalesce-locals handling of set/tee local of an unreachable; we still ↵Alon Zakai (kripken)2017-07-114-14/+61
| | | | | | | | 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-113-2/+73
| | | | | | | | preserve it
| * changing a set to a tee or vice versa needs to take into account the value ↵Alon Zakai (kripken)2017-07-115-4/+23
| | | | | | | | may be unreachable
| * handle unary and binary nodes that have implicit traps in vacuumAlon Zakai (kripken)2017-07-115-1/+55
| |
| * fix Const finalization and use it properly in br finalization in PrecomputeAlon Zakai (kripken)2017-07-115-1/+77
| |
| * loads may trap, do not remove them in vacuum unless the pass options allow thatAlon Zakai (kripken)2017-07-1110-63/+449
| |
| * properly handle if arm removal in vacuumAlon Zakai (kripken)2017-07-113-0/+46
| |
| * add the option to seek named breaks, not just taken breaks; refactor headers ↵Alon Zakai (kripken)2017-07-1119-268/+352
| | | | | | | | to make this practical
| * refactor and improve break validation. breaks names are unique, so we don't ↵Alon Zakai (kripken)2017-07-114-18/+33
| | | | | | | | need a stack, and break targets must exist even if they are not actually taken
| * finalize new drops in SimplifyLocalsAlon Zakai (kripken)2017-07-113-0/+16
| |
| * don't remove unreachable nodes in vaccuum, it can alter types, and dce does ↵Alon Zakai (kripken)2017-07-113-3/+39
| | | | | | | | that anyhow, let it do it's thing
* | Refactor validation failure and printing, validate atomic memory (#1090)Derek Schuff2017-07-122-33/+76
| |
* | Set up Travis to run build on various architectures using Alpine and deploy ↵Jakub Jirutka2017-07-121-36/+111
| | | | | | | | | | | | | | | | | | | | statically linked binaries to GH Releases (#1064) * Travis: Refactor config to use Build Stages * Travis: Add jobs for building on various architectures using Alpine * Travis: Build static binaries and deploy them to GH Releases
* | add docs and error hints when a Call should be a CallImport (#1081)Alon Zakai2017-07-118-746/+1381
|/ | | | | | * add docs and error hints when a Call should be a CallImport * fix binaryen API docs in docs/
* Factor wasm validator into a cpp file (#1086)Derek Schuff2017-07-104-620/+685
| | | Also small cleanup to CMake libraries
* Fix visitor stubs in traversal templates #1084Derek Schuff2017-07-101-34/+34
| | | Making them valid means that derived implementations need not implement all of them, and can fall back on the ones in the template.
* Add IR, parsing, printing, and binary for atomic cmpxchg (#1083)Derek Schuff2017-07-1012-14/+287
|
* Add IR, parsing and binary support for AtomicRMW instructions from wasm ↵Derek Schuff2017-07-0612-73/+427
| | | | | threads proposal (#1082) Also leave a stub (but valid) visitAtomicRMW in the visitor template so that not all visitors need to implement this function yet.
* show a clear error on nulls in inline strings in binary format (#1068)Alon Zakai2017-07-051-1/+5
| | | | * show a clear error on nulls in inline strings (which we don't support, and in general are not seen in practice, but are technically valid wasm) in binary format reading
* Unified module loader support in binaryen.js (#1074)Daniel Wirtz2017-07-056-636/+640
| | | | | | * Unified module loader support in binaryen.js * Recompiled binaryen.js and wasm.js
* Use sanitizer runtime to print pretty stack traces on unreachable (#1079)Derek Schuff2017-06-301-0/+3
| | | For even better debugging support.
* Code folding (#1076)Alon Zakai2017-06-2821-24993/+28204
| | | | | | | | | | | | | | | | Adds a pass that folds code, i.e. merges it when possible. See details in comment in the pass implementation cpp. This is enabled by default in -Os and -Oz. Seems risky to enable anywhere else, as it does add branches - likely predictable ones so maybe no slowdown, but still some risk. Code size numbers: wasm-backend: 196331 + binaryen -Os (before): 182598 + binaryen -Os (with folding): 181943 asm2wasm -Os (before): 172463 asm2wasm -Os (with folding): 168774 So this reduces wasm-backend output by an additional 0.5% than it could before. Mainly this is because the wasm backend already has code folding, whereas on asm2wasm output, where we didn't have folding before, this saves over 2%. The 0.5% improvement on the wasm backend's output might be because this can fold more types of code than LLVM can (it can fold nested control flow, in particular).
* Add atomic loads and stores (#1077)Derek Schuff2017-06-2815-86/+514
| | | | | Add IR, wast and binary support for atomic loads and stores. Currently all IR generated by means other than parsing wast and binary files always generates non-atomic accesses, and optimizations have not yet been made aware of atomics, so they are certainly not ready to be used yet.
* Runtime.stackAlloc should grow down for wasm (#1073)jgravelle-google2017-06-2885-512/+256
| | | | | | * Runtime.stackAlloc should grow down for wasm * stackAlloc should align properly; update tests