Instead of multiple loops and multiple vectors, parse Wasm expressions
in a simple loop. This gets us from ~450ms to instantiate spidermonkey
to ~280ms.
(cherry picked from commit 2cfc1873c0436f598f897dd84172b753e2c2b03c)
`swizzle` had the wrong operands, and the vector masking boolean logic
was incorrect in the internal `shuffle_or_0` implementation. `shuffle`
was previously implemented as a dynamic swizzle, when it uses an
immediate operand for lane indices in the spec.
(cherry picked from commit 9cc3e7d32d150dd30d683c1a8cf0bd59676f14ab)
Also make `store_to_memory` take a `MemoryArgument` so that we no longer
have to make "synthetic instructions" in some scenarios.
(cherry picked from commit ea67bc989f58e27a28f473819e4265a0ad0af97f)
This makes it so exit() traps with a known error; an embedder (wasm.cpp)
can simply match this format and handle the request accordingly.
(cherry picked from commit 16dd8d4d3ba0017383df86739b1d1507593dd682)
If the current block has already been terminated, we should just skip
creating a per-iteration environment.
(cherry picked from commit 9a7e6158afedee8f169f10040a79db95a4e9aebc)
The default limit (at least on Linux) causes us to run out of file
descriptors at around 15 tabs. Increase this limit to 8k. This is a
rather arbitrary number, but matches the limit set by Chrome.
(cherry picked from commit d58a8b514647a1137d76a1d601f0c325a51f29b3;
amended to also update Userland/Applications/Browser/main.cpp)
These have a few rules that we didn't follow in most cases:
- CSS-wide keywords are not allowed. (inherit, initial, etc)
- `default` is not allowed.
- The above and any other disallowed identifiers must be tested
case-insensitively.
This introduces a `parse_custom_ident_value()` method, which takes a
list of disallowed identifier names, and handles the above rules.
(cherry picked from commit 6ae2b8c3d901d8a7255046a4517fddd8b0fa84c4)
This stubs out enough to get https://athenacrisis.com/ far enough to
actually load :^)
(cherry picked from commit 52ccd69e49a26b5fd2747730e278503625eb71e7)
Instead, just log an error and continue on gracefully, returning an
instance of ourselves as spec'd.
(cherry picked from commit 52be4925bc3094d4e253649f0bf81dc520a9f390)
This is called by https://athenacrisis.com/ and passed through to
AudioNode.connect, which expects an AudioNode.
Implement this function enough so that we return an AudioNode so that
AudioNode.connect does not throw a TypeError.
(cherry picked from commit a51095f705c5a6bce2c291e8b51ac90182c63419)
This is an AudioNode representing the final audio destination and is
what the user will ultimately hear.
This node is used as one of the connecting nodes in athenacrisis.com
Add a placeholder for the interface without anything backing it for now.
(cherry picked from commit 5eb80b8697d458ea2b70112a995e066f64b37ca6)
Ultimately it's RequestServer who knows which kind of encodings it can
handle and decompress, so let's have it set the Accept-Encoding.
(cherry picked from commit 2c918b540db2efcef4751084592ae1cf3be0999f)
Fetch requests from web workers fail CORS checks because the origin is
not inherited from the outside settings. Ensure web worker origin is
correctly inherited from outside settings
(cherry picked from commit 24adb1c4526fe29bbc332780272251be1635cf05)
Now that `Tokenizer::tokenize()` just returns a String, there are no
errors to propagate, and we can simplify the user code a bit.
(cherry picked from commit 59778d2b365476ecb5b50218dae4457493ee7bf7)