summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* select values must be validAlon Zakai2016-09-073-17/+21
|
* move drop into blocks, dropping all the breaks as well, when possibleAlon Zakai2016-09-073-282/+344
|
* loops no longer have an out label and other upstream loop updatesAlon Zakai2016-09-0756-40636/+41705
|
* call_indirect now has the target at the endAlon Zakai2016-09-0727-331/+333
|
* it is not cool to return a nopAlon Zakai2016-09-072-1/+2
|
* add drop and tee expressionsAlon Zakai2016-09-07106-11169/+16826
|
* remove wasm2asm tests, temporarily disable .s testsAlon Zakai2016-09-071-104/+70
|
* remove lower-if-else, as it's no longer neededAlon Zakai2016-09-075-140/+0
|
* remove drop-return-values passAlon Zakai2016-09-074-86/+0
|
* fix parsing in split_wastAlon Zakai2016-09-071-1/+6
|
* make sure to create unique implicit block names in s-parserAlon Zakai2016-09-071-1/+5
|
* debugging in printAlon Zakai2016-09-071-0/+2
|
* better printing when assert_invalids failAlon Zakai2016-09-071-1/+7
|
* Color support for Windows (#693)Loo Rong Jie2016-09-072-8/+34
|
* Improvements to build-js.sh and JS API (#679)Rasmus2016-09-0210-182162/+828
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Adds command-line argument to build-js.sh for specifying the location of Emscripten. Also spreads out program arguments on separate lines * Exposes WasmBinaryWriter and BufferWithRandomAccess in the JS API to allow writing WASM modules and access the produced bytes via the JS API * Updates bin/binaryen.js and bin/wasm.js from changes to build-js.sh * Adds exclude patterns to .gitignore for some files generated by build-js.sh and .DS_Store for macOS * Changes build-js.sh to use EMSCRIPTEN env var instead of a command-line argument to provide the path to emscripten * Improvements to JS builds - Adds -g flag to build-js.sh that will build unoptimized and unmangled versions of binaryen.js and wasm.js (output has a "-g.js" suffix to allow co-existence with regular optimized builds). - Enables closure compiler for non-debug builds - Adds browser test for s-expression parser + WASM code gen (requires wasm to be enabled in the browser.) - Adds iterator interface to BufferWithRandomAccess (when Symbol.iterator is available) - Adds toArrayBuffer to BufferWithRandomAccess (when TypedArray is available) - Adds compileWast(sourceText :string) :ArrayBuffer to the module, parsing & compiling s-expression code to a WASM module - Changes the way binaryen.js is exported to allow usage in CommonJS, AMD and UMD envionments. * Expose "Binaryen" global in a better way to work with a.js generated by check.py * Fix to binaryen.js to only export a global variable when running the test (a.js) while inside a module (avoids polluting global in e.g. nodejs). Also fixes a spelling mistake. * Better "no WASM detected" message in test/binaryen.js/browser.html * Small change to error message in build-js.sh where $EMSCRIPTEN does not point to a directory * Changes emcc args in build-js.sh after investingating a large number of argument combinations. Also adds a browser benchmark. The result of emcc arguments and the effect on performance is summarized in this doc: https://gist.github.com/rsms/e33c61a25a31c08260161a087be03169 * Enable inferring emscripten path by looking in PATH when EMSCRIPTEN is not set in env
* Update readme for stack machine plans (#690)Alon Zakai2016-09-011-13/+31
| | | Update readme for stack machine plans, see #663.
* Update waterfall build to 10372 (#689)Derek Schuff2016-08-31464-38736/+41076
| | | | | | | This brings in LLVM changes up to r28025, which includes a fix for PR29127 and includes disabling the store-result optimization. * remove extraneous wasm-interpreter.h change
* asm.js-style setjmp/longjmp handling for wasm (#687)Derek Schuff2016-08-303-21/+74
|\ | | | | Change calls to emscripten_longjmp_jmpbuf to emscripten_longjmp (imported from JS).
| * Method name fixaheejin2016-08-301-2/+2
| |
| * asm.js-style setjmp/longjmp handling for wasm: add handling foraheejin2016-08-303-21/+74
|/ | | | emscripten_longjmp_jmpbuf name
* Asm.js-style setjmp/longjmp support for wasm (#681)Heejin Ahn2016-08-263-6/+23
| | | | | | | This needs to export realloc as well, in addition to malloc and free handled in #4469. To support asm.js style setjmp/longjmp, wasm needs to export realloc as well, in addition to malloc and free handled in #4469. saveSetjmp() uses realloc within it, and realloc is not implemented in JS glue code.
* Merge pull request #682 from loganchien/fix-empty-deadlockAlon Zakai2016-08-2611-11/+39
|\ | | | | Fix asm2wasm dead lock caused by empty module
| * Fix asm2wasm dead lock caused by empty modules.Logan Chien2016-08-266-1/+29
| | | | | | | | | | | | | | | | | | This commit fixes an asm2wasm dead lock when asm2wasm is compiling an empty module, i.e. a module without any functions. Without this commit, worker threads are likely to leave `workerMain()` and decrease `liveWorkers` early. Consequently, `waitUntilAllReady()` will never observe `liveWorkers == numWorkers`.
| * Remove unnecessary type cast.Logan Chien2016-08-261-2/+1
| | | | | | | | | | std::thread can forward the arguments to main function properly. We don't have to cast them from/to void*.
| * Replace std::unique<T>(new T()) with make_unique<T>().Logan Chien2016-08-266-8/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit modernize the code base by replacing: std::unique_ptr<T>(new T(...)) with: make_unique<T>(...) or: wasm::make_unique<T>(...) This is a step closer to adopt C++14 std::make_unique<T>(...).
* | Fix alignment bug in .lcomm (#680)Heejin Ahn2016-08-263-2/+43
|/ | | | | | | | | | | | When parsing .lcomm directives, s2wasm does not parse the alignment number and skip it. This causes alignment bugs in some cases. (In the test case attached, 'buf' should be 4 bytes aligned, but it does not align it properly, so this code was generated: ``` (call $foo (i32.const 13) ) ``` 13 is not 4-bytes aligned. This patch fixes this bug.
* Merge pull request #677 from sethsamuel/patch-1Alon Zakai2016-08-181-0/+4
|\ | | | | Update README.md with full hello_world.asm.js source
| * Update README.md with full hello_world.asm.js sourceSeth Samuel2016-08-181-0/+4
|/ | | This tripped me up as a complete beginner, since I had copied out the example code from the README rather than the test file.
* Merge pull request #668 from WebAssembly/tables_n_memoriesAlon Zakai2016-08-16112-5485/+6389
|\ | | | | Tables and memories
| * update wasm.jsAlon Zakai2016-08-151-4150/+4710
| |
| * offset support in tableAlon Zakai2016-08-1545-102/+240
| |
| * update wasm.jsAlon Zakai2016-08-121-4270/+4441
| |
| * support function table initial and max sizes, and new printing formatAlon Zakai2016-08-1240-37/+114
| |
| * support expressions in segment offsetsAlon Zakai2016-08-1284-278/+236
| |
* | interpreter debugging fixes (#672)Alon Zakai2016-08-151-11/+13
|/
* parsing fix in compiled-to-js parser (#669)Alon Zakai2016-08-122-51380/+54615
|
* Implement asm.js style exception handling for Wasm (#664)Heejin Ahn2016-08-117-9/+269
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Implement asm.js style exception handling for Wasm Converts invoke wrapper names generated by LLVM backend to real invoke wrapper names that are expected by JavaScript glue code. This is required to support wasm exception handling (asm.js style). LLVM backend lowers invoke @func(arg1, arg2) to label %invoke.cont unwind label %lpad into ... (some code) call @invoke_SIG(func, arg1, arg2) ... (some code) SIG is a mangled string generated based on the LLVM IR-level function signature. In LLVM IR, types are not lowered yet, so this mangling scheme simply takes LLVM's string representtion of parameter types and concatenate them with '_'. For example, the name of an invoke wrapper for function void foo(struct mystruct*, int) will be "__invoke_void_%struct.mystruct*_int". This function converts the names of invoke wrappers based on their lowered argument types and a return type. In the example above, the resulting new wrapper name becomes "invoke_vii". * Address comments Change variable names to camelcase Add a small (semi-)handwritten test case * Export malloc and free from wasm when available * Add a test case for exporting malloc/free feature + cosmetic 'file' name change in text_before_type.s * fixInvokeWrapper -> fixEmExceptionInvoke * Add a TODO
* in DemoteFloat64, if the truncated value is exactly at the limit, return it ↵Alon Zakai2016-08-082-0/+6
| | | | | (#665) and update spec tests
* Fix a parsing bug introduced by #615 (#661)Heejin Ahn2016-08-053-0/+35
| | | | | | | | | | | | | | | Name lhs = getStrToSep(); if (!skipEqual()){ s = strchr(s, '\n'); if (!s) break; continue; } The above code snippet introduced by #615 has a bug when there is only one word (e.g. ".text") in a line. If there is only one word in a line, skipEqual() also skips the newline character at the end of the line, and strchr(s, '\n') moves the cursor to the end of the next line, effectively skipping the whole next line.
* Update waterfall build revision to 9397 (#662)Derek Schuff2016-08-0452-3722/+3604
| | | Includes torture tests and new expected passes
* Create a dummy function to prevent NULL miscomparisons, if necessary (#658)Dominic Chen2016-08-0310-44/+98
| | | Resolves WebAssembly/spec#312
* support pre-assigning indexes for functions that are called indirectly (#616)Dominic Chen2016-08-025-2/+188
| | | This patch adds support for an ".indidx" primitive that pre-assigns table indexes for functions that are called indirectly. It is used by the upstream LLVM WebAssembly backend to support fine-grained control-flow integrity for indirect function calls by emitting instrumentation at each indirect call site to check that the destination index is within certain ranges that correspond to disjoint equivalence classes of indirect call targets. The reason that this primitive is necessary is because the layout of the table section isn't determined until the WebAssembly linker is executed, but indirect function to table index mappings need to be known when opt is executed to generate the correct range checking in the LLVM IR.
* update gitignore for autogenerated test files (#657)Dominic Chen2016-08-011-3/+12
|
* wast function type name desugaring is changing in spec:301 (#654)Alon Zakai2016-07-2829-328/+495
|
* Fix trailing whitespace, single-character strings, checking map element ↵Dominic Chen2016-07-225-64/+55
| | | | presence, and eliminate explicit index counter (#633)
* binary support for wasm globals (#652)Alon Zakai2016-07-222-13/+71
|
* support wasm globals (#650)Alon Zakai2016-07-219-9/+256
|
* Merge pull request #648 from WebAssembly/relooper-optsAlon Zakai2016-07-2022-6902/+9105
|\ | | | | Relooper improvements
| * more RemoveUnusedName opts: merge names when possible, and do block/loop ↵Alon Zakai2016-07-209-5412/+5445
| | | | | | | | merging based on their names
| * remove unused labels from loops too, and general clean ups for RemoveUnusedNamesAlon Zakai2016-07-2011-5527/+5588
| |