summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
* Unified module loader support in binaryen.js (#1074)Daniel Wirtz2017-07-052-29/+15
| | | | | | * 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-2810-108/+732
| | | | | | | | | | | | | | | | 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-2811-86/+224
| | | | | 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-281-8/+4
| | | | | | * Runtime.stackAlloc should grow down for wasm * stackAlloc should align properly; update tests
* Add shared memories (#1069)Derek Schuff2017-06-276-29/+57
| | | | | Begin to implement wasm threading proposal in https://github.com/WebAssembly/threads/blob/master/proposals/threads/Overview.md This PR just has shared memory attribute with wast and binary support.
* Consistently handle possible traps in all cases (#1062)Alon Zakai2017-06-223-11/+81
| | | | | | * consistently handle possible traps in asm.js ffi results * consistently handle possible traps in i64/float conversions
* Change char to auto to avoid type-limits warn on some arches (#1066)Jakub Jirutka2017-06-221-1/+1
| | | Fixes #1059
* Untee pass (#1053)Alon Zakai2017-06-144-3/+66
|
* S-expression parsing in C API and binaryen.js (#1050)Alon Zakai2017-06-133-0/+29
| | | | | | * add C API and binaryen.js support for parsing s-expressions * update js builds and tests
* SSA pass (#1049)Alon Zakai2017-06-1313-29/+698
| | | | | | | * Add SSA pass which ensures a single assign for each local, except for merged locals where we ensure exactly a single assign from one of the paths leading to that use * Also add InstrumentLocals pass, useful for debugging locals (similar to InstrumentMemory but for locals) * Fix a PickLoadSigns bug with tees not being ignored, which was not noticed until now because we ran it on flatter output by default, but the ssa pass uncovered the bug
* fix interpreted code from wasm.js (#1043)Alon Zakai2017-06-121-2/+2
| | | | | | * fix interpreted code from wasm.js, when the result is none, we must return an empty Literal (the interpreter now asserts on this, it didn't before) * update js builds
* Support new result syntax for if/loop/block (#1047)Sam Clegg2017-06-127-25/+37
| | | | | | Support both syntax formats in input since the old spec tests still need to be parsable.
* Optimize/merge duplicate function types (#1041)Alon Zakai2017-06-121-1/+66
|
* Log callImport fatal error to cerr so it is not buffered. (#1036)Sam Clegg2017-06-123-3/+13
| | | | | | | Use Fatal() rather than stdout or report callImport error Without this the write to stdout can be lost (Since the following line aborts)
* Output inf/-inf rather than infinity/-infinitySam Clegg2017-06-091-1/+1
| | | | | wast2wasm wes recently updated to only support the former: https://github.com/WebAssembly/wabt/pull/482
* C API fixes (#1042)Alon Zakai2017-06-071-16/+17
| | | | | | * fix mutex usage in C API, and some minor cleanup around it too * update testcase that was forgotten to be updated before
* Update binaryen-c/binaryen.js, fixes #1028, fixes #1029 (#1030)Daniel Wirtz2017-06-076-11/+179
| | | This PR adds global variable support (addGlobal, getGlobal, setGlobal), host operations (currentMemory, growMemory), a few utility functions (removeImport, removeExport, getFunctionTypeBySignature with the latter being scheduled for removal once a better alternative is in place) and it introduces an additional argument to specify the result type in BinaryenBlock (effectively breaking the C-API but retaining previous behaviour by introducing the BinaryenUndefined() type for this purpose). Additionally, it enables compilation with exception support in build-js.sh as exceptions are thrown and caught when optimizing endless loops, intentionally resulting in an unreachable opcode. Affected test cases have been updated accordingly.
* S2wasm runtime funcs (#1027)jgravelle-google2017-06-054-16/+137
| | | | | | | | | | | | | | | | * Generate stackSave function in s2wasm * Generate stackAlloc in s2wasm * Generate stackRestore in s2wasm * Update dot_s tests for runtime functions * Add s2wasm check for exporting runtime functions * Fix flake8 for s2wasm.py * Rename wasmBuilder to builder
* validate returned values in all cases, even if the function returns none we ↵Alon Zakai2017-06-021-6/+4
| | | | should still not have returns with a value, etc. update spec tests to remove some stacky tests that do not fit these new validation rules (#1034)
* clean up unnecessary spacingAlon Zakai2017-06-011-1/+1
|
* use atoll in getCheckedAddress string parsingAlon Zakai2017-06-011-1/+1
|
* refactor s-expr parsing code to remove duplication and unnecessary thingsAlon Zakai2017-06-012-39/+23
|
* remove unneeded code in interpreterAlon Zakai (kripken)2017-06-011-1/+0
|
* error if select sides are concrete but differentAlon Zakai (kripken)2017-06-011-0/+3
|
* fix fuzz-exec catching of traps, they can occur during init, not just callAlon Zakai (kripken)2017-06-011-6/+7
|
* handle out of range memory size values in s-expr parsingAlon Zakai (kripken)2017-06-011-2/+10
|
* handle out of range break offset parsingAlon Zakai2017-06-011-0/+2
|
* verify s-expr parsing of alignmentsAlon Zakai2017-06-011-2/+6
|
* validate memory/table Address values in s-expr parsingAlon Zakai (kripken)2017-06-011-4/+20
|
* trap on bad result types in shell-interface callTableAlon Zakai (kripken)2017-06-011-0/+3
|
* handle empty stack in sourceToUniqueAlon Zakai (kripken)2017-06-011-1/+4
|
* host op parsing error handlingAlon Zakai (kripken)2017-06-012-2/+11
|
* handle duplicate functions in s-expr parsingAlon Zakai (kripken)2017-06-011-0/+1
|
* throw parse errors in UniqueNameMapperAlon Zakai (kripken)2017-06-011-2/+8
|
* handle duplicate function types in s-expr parsingAlon Zakai (kripken)2017-06-011-0/+2
|
* handle duplicate imports and globals in s-expr parsingAlon Zakai (kripken)2017-06-011-0/+6
|
* handle a parse error of a function declaration with mixed import insideAlon Zakai (kripken)2017-06-011-0/+1
|
* s-expr parsing: handle empty switchAlon Zakai (kripken)2017-06-011-0/+1
|
* harden parsing.hAlon Zakai (kripken)2017-06-011-46/+50
|
* harden s-expr parsingAlon Zakai (kripken)2017-06-011-25/+29
|
* fix call depth detection in wasm-opt interpretingAlon Zakai (kripken)2017-06-012-2/+2
|
* handle the wrong number of functions being provided in binary formatAlon Zakai (kripken)2017-06-011-0/+8
|
* in extra pass-debug validation, don't assume there is always a function, the ↵Alon Zakai (kripken)2017-06-011-1/+1
| | | | error may be in a global init
* Exporting/importing debug location information from .wast/.asm.js/.s formats ↵Yury Delendik2017-06-0115-27/+438
| | | | | | | | (#1017) * Extends wasm-as, wasm-dis and s2wasm to consume debug locations. * Exports source map from asm2wasm
* Refactor optimization opts (#1023)Alon Zakai2017-05-243-98/+129
| | | | * refactor optimization opts helper code to a class
* More fuzz fixes (#1021)Alon Zakai2017-05-221-4/+16
| | | | | | * validate that memory/table segment values fit in the initial range * validate that select condition should be i32
* add --fuzz-exec option to wasm-opt, which (when possible) executes results ↵Alon Zakai (kripken)2017-05-201-0/+73
| | | | before and after optimizations are run, checking for changes. this can be used when fuzzing
* relooper improvementsAlon Zakai (kripken)2017-05-202-1/+9
|
* use TypeUpdater in vacuumAlon Zakai (kripken)2017-05-202-36/+48
|