Skip to content

Inconsistency with "if" operator #275

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
binji opened this issue Apr 18, 2016 · 2 comments
Closed

Inconsistency with "if" operator #275

binji opened this issue Apr 18, 2016 · 2 comments
Milestone

Comments

@binji
Copy link
Member

binji commented Apr 18, 2016

The spec if operator introduces a new branch depth for the then and else arms, but I don't see this specified anywhere in the AstSemantics doc. This is also inconsistent with how the binary format is currently implemented (in at least v8, probably other engines too).

I've ended up hacking around this in sexpr-wasm, but it would be nice to introduce some consistency here. AIUI, this was added in preparation for the switch to postorder; perhaps it should be in a binary_0xb branch?

@rossberg
Copy link
Member

Yes, we talked about making this change in February, in order to make all blocks have labels consistently. But in the light of WebAssemply/design#652, it might make more sense not to do it. Let's see where we end up with that one.

@sunfishcode sunfishcode added this to the MVP milestone Jul 8, 2016
@rossberg
Copy link
Member

Decided to keep the if-labels.

ngzhian added a commit to ngzhian/spec that referenced this issue Nov 4, 2021
i8x16, i16x8, i32x4, i64x2 eq, ne, lt_s, lt_u, le_s, le_u, gt_s, gt_u,
ge_s, ge_u.

Implemented in terms of Binary operations, since they return the same
v128 type, rather than a boolean like for I32 and I64.

Lanes that compare true return all 1s, otherwise all 0s.
rossberg pushed a commit that referenced this issue Feb 28, 2024
This cherry-picks interpreter changes from
https://github.com/WebAssembly/tail-call to run spec tests that mix
`try`s with `return_call(_indirect)`s (#275). When tail-call is merged
to the main spec repo, we can revert this change and merge the upstream
spec.

This also adds missing handling for `ReturningInvoke` in the new
`Catch`/`Caught`/`Delegate` instructions in the evaluator.
rossberg pushed a commit that referenced this issue Feb 28, 2024
This adds tests of `return_call(_indirect)`s within `try`s. Because this
repo's interpreter doesn't have the tail call support, this requires
 #274 to be merged before merging.

These test also needs `--experimental-wasm-return_call` to `node`
argument in the CI to pass.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants