| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
| |
Update build-js.sh to output to `out` directory. This is district
from the `bin` directory which is used by the cmake build and may or
may not live in the source tree. The `out` directory currently always
lives in the source tree.
As a followup change I hope to additionally move all test outout into
this tree.
See #2104
|
| |
|
| |
|
| |
|
|
|
| |
Set it to a local in the asmFunc scope, so that minifiers can easily see it's a simple local value (instead of using it as an upvar from the parameters higher up, which was how the emscripten glue was emitting it).
|
|
|
| |
This happens on e.g. an i32 load of a constant offset, then we have constant >> 2.
|
|
|
|
|
| |
- Print `globals` array in the tracing mode like other arrays
(`functions`, `exports`, `imports`, ...)
- Add accessor functions for globals
|
|
|
|
|
|
| |
It doesn't seem to be used anywhere and I don't know why the
implementation for `WasmBinaryBuilder::getGlobalName` and
`WasmBinaryBuilder::getFunctionIndexName` are different. Renamed
`getFunctionIndexName` to `getFunctionName` for consistency.
|
|
|
|
|
|
|
|
|
| |
(#2095)
Previously we were only creating `dynCall` functions for signatures
that we have statically in the table. However for dynamic linking we
may need to invoke functions that we don't have table entries for
(e.g. table entries from a different module).
|
|
|
| |
This helps quite a lot on wasm2js.
|
|
|
|
|
| |
In JS a reinterpret is especially expensive, as we implement it as a write to a temp buffer and a read using another view. This finds places where we load a value from memory, then reinterpret it later - in that case, we can load it using another view, at the cost of another load and another local.
This is helpful on things like Box2D, where there are many reinterprets due to the main 2D vector class being an union over two floats/ints, and LLVM likes to do a single i64 load of them.
|
|
|
| |
Helps to avoid trampling each other when binaryen is called multiple times from emcc, for example.
|
|
|
|
| |
This adds except_ref type, which is a part of the exception handling
proposal.
|
| |
|
|
|
|
|
|
| |
Our current clang-tidy setting requires {} after ifs. Unlike
clang-format, I couldn't find any directives or options that allow us to
exclude the generated inc file from clang-tidy. Anyway adding a pair of
braces is all it takes to make it pass.
|
|
|
| |
A few things that were missing in #2048.
|
| |
|
|
|
|
| |
of them precisely anyhow (#2087)
|
|
|
|
|
| |
When we run clang-tidy for the second time to show the error, don't show
stderr output because they are not very helpful and all error messages
are printed in stdout.
|
|
|
| |
This only adds the feature and its flag and not the instructions yet.
|
|
|
|
| |
When loading a boolean, prefer the signed heap (which is more commonly used, and may be faster).
We never use HEAPU32 (HEAP32 is always enough), just remove it.
|
|
|
| |
Without this PR, wasm2js0.test_printf in emscripten took an extremely long time to compile.
|
|
|
| |
A minifier would probably remove them later anyhow, but they make reading the code annoying and hard.
|
|
|
|
|
| |
We don't actually try to emit traps for loads, stores, invalid float to ints, etc., so when optimizing we may as well do so under the assumption those traps do not exist.
This lets us emit nice code for a select whose operands are loads, for example - otherwise, the values seem to have side effects.
|
|
|
|
|
|
|
| |
If a global is marked mutable but not assigned to, make it immutable.
If an immutable global is a copy of another, use the original, so we can remove the duplicates.
Fixes #2011
|
|
|
|
|
| |
This replaces the wasm2js code that lowered them to pessimistic (1-byte aligned) loads and stores. The new pass will do the optimal thing, keeping 2-byte alignment where possible.
This is also nicer as a standalone pass, which has the simple property that after it runs all loads and stores are aligned, instead of some code scattered inside wasm2js.
|
|
|
| |
Reenable the clang-tidy hook temporarily disabled by #2075.
|
|
|
| |
That pass is very slow on unoptimized code (super-linear on the number of locals, which if unoptimized can be massive due to flatten).
|
|
|
| |
Applies the changes in #2065, and temprarily disables the hook since it's too slow to run on a change this large. We should re-enable it in a later commit.
|
|
|
| |
In particular, coalesce-locals is useful even if closure is run later (apparently it finds stuff closure can't).
|
|
|
|
| |
EmscriptenGlueGenerator::separateDataSegments (#2068)
|
|
|
|
|
| |
We flatten for the i64 lowering etc. passes, and it is worth optimizing afterwards, to clean up stuff they created. That is run if the user ran wasm2js with an optimization level (like wasm2js -O3).
Split the test files to check both optimized and unoptimized code.
|
|
|
| |
Without this header file errors would be ignored.
|
|\
| |
| |
| |
| | |
This adds clang-tidy hook to Travis CI. This runs clang-tidy to the diff
between the current HEAD and master. (It takes very long time to run
clang-tidy on the whole repo, so it is not feasible anyway.)
|
| |\ |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|