fitzgen added the cranelift:goal:optimize-speed label to Issue #9351.
fitzgen added the performance label to Issue #9351.
fitzgen added the wasmtime:ref-types label to Issue #9351.
fitzgen opened issue #9351:
- [ ] Speed up getting and setting
funcrefs inside GC objects: https://github.com/bytecodealliance/wasmtime/issues/9347- [ ] Const fold through
uadd_overflow_trap/trap{z,nz}insts that show up frequently in GC heap accesses: https://github.com/bytecodealliance/wasmtime/issues/5908- [ ] Type-based alias analysis for Wasm GC: https://github.com/bytecodealliance/wasmtime/issues/9348
- [ ] Escape analysis for Wasm GC: https://github.com/bytecodealliance/wasmtime/issues/9349
- [ ] Reuse linear memories and their optimized bounds checks for Wasm GC heaps: https://github.com/bytecodealliance/wasmtime/issues/9350
github-actions[bot] commented on issue #9351:
Subscribe to Label Action
cc @fitzgen
<details>
This issue or pull request has been labeled: "wasmtime:ref-types"Thus the following users have been cc'd because of the following labels:
- fitzgen: wasmtime:ref-types
To subscribe or unsubscribe from this label, edit the <code>.github/subscribe-to-label.json</code> configuration file.
Learn more.
</details>
fitzgen edited issue #9351:
- [ ] Speed up getting and setting
funcrefs inside GC objects: https://github.com/bytecodealliance/wasmtime/issues/9347- [ ] Const fold through
uadd_overflow_trap/trap{z,nz}insts that show up frequently in GC heap accesses: https://github.com/bytecodealliance/wasmtime/issues/5908
- [ ] Also add a mid-end rule like
(uadd_overflow_trap (uextend x) (uextend y)) ==> (iadd (uextend x) (uextend y))- [ ] Type-based alias analysis for Wasm GC: https://github.com/bytecodealliance/wasmtime/issues/9348
- [ ] Escape analysis for Wasm GC: https://github.com/bytecodealliance/wasmtime/issues/9349
- [ ] Reuse linear memories and their optimized bounds checks for Wasm GC heaps: https://github.com/bytecodealliance/wasmtime/issues/9350
fitzgen edited issue #9351:
- [ ] Speed up getting and setting
funcrefs inside GC objects: https://github.com/bytecodealliance/wasmtime/issues/9347- [ ] Const fold through
uadd_overflow_trap/trap{z,nz}insts that show up frequently in GC heap accesses: https://github.com/bytecodealliance/wasmtime/issues/5908
- [ ] Also add a mid-end rule like
(uadd_overflow_trap (uextend x) (uextend y)) ==> (iadd (uextend x) (uextend y))- [ ] Type-based alias analysis for Wasm GC: https://github.com/bytecodealliance/wasmtime/issues/9348
- [ ] Escape analysis for Wasm GC: https://github.com/bytecodealliance/wasmtime/issues/9349
- [ ] Reuse linear memories and their optimized bounds checks for Wasm GC heaps: https://github.com/bytecodealliance/wasmtime/issues/9350
```[tasklist]Tasks
~~~
fitzgen edited issue #9351:
- [ ] Speed up getting and setting
funcrefs inside GC objects: https://github.com/bytecodealliance/wasmtime/issues/9347- [ ] Const fold through
uadd_overflow_trap/trap{z,nz}insts that show up frequently in GC heap accesses: https://github.com/bytecodealliance/wasmtime/issues/5908
- [ ] Also add a mid-end rule like
(uadd_overflow_trap (uextend x) (uextend y)) ==> (iadd (uextend x) (uextend y))- [ ] Type-based alias analysis for Wasm GC: https://github.com/bytecodealliance/wasmtime/issues/9348
- [ ] Escape analysis for Wasm GC: https://github.com/bytecodealliance/wasmtime/issues/9349
- [ ] Reuse linear memories and their optimized bounds checks for Wasm GC heaps: https://github.com/bytecodealliance/wasmtime/issues/9350
```[tasklist]Tasks
~~~
fitzgen edited issue #9351:
- [ ] Speed up getting and setting
funcrefs inside GC objects: https://github.com/bytecodealliance/wasmtime/issues/9347- [ ] Const fold through
uadd_overflow_trap/trap{z,nz}insts that show up frequently in GC heap accesses: https://github.com/bytecodealliance/wasmtime/issues/5908
- [ ] Also add a mid-end rule like
(uadd_overflow_trap (uextend x) (uextend y)) ==> (iadd (uextend x) (uextend y))- [ ] Type-based alias analysis for Wasm GC: https://github.com/bytecodealliance/wasmtime/issues/9348
- [ ] Escape analysis for Wasm GC: https://github.com/bytecodealliance/wasmtime/issues/9349
- [ ] Reuse linear memories and their optimized bounds checks for Wasm GC heaps: https://github.com/bytecodealliance/wasmtime/issues/9350
```[tasklist]Tasks
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9352
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9350
~~~
fitzgen edited issue #9351:
- [ ] Speed up getting and setting
funcrefs inside GC objects: https://github.com/bytecodealliance/wasmtime/issues/9347- [ ] Const fold through
uadd_overflow_trap/trap{z,nz}insts that show up frequently in GC heap accesses: https://github.com/bytecodealliance/wasmtime/issues/5908
- [ ] Also add a mid-end rule like
(uadd_overflow_trap (uextend x) (uextend y)) ==> (iadd (uextend x) (uextend y))- [ ] Type-based alias analysis for Wasm GC: https://github.com/bytecodealliance/wasmtime/issues/9348
- [ ] Escape analysis for Wasm GC: https://github.com/bytecodealliance/wasmtime/issues/9349
- [ ] Reuse linear memories and their optimized bounds checks for Wasm GC heaps: https://github.com/bytecodealliance/wasmtime/issues/9350
```[tasklist]Tasks
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9352
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9350
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9349
~~~
fitzgen edited issue #9351:
- [ ] Speed up getting and setting
funcrefs inside GC objects: https://github.com/bytecodealliance/wasmtime/issues/9347- [ ] Const fold through
uadd_overflow_trap/trap{z,nz}insts that show up frequently in GC heap accesses: https://github.com/bytecodealliance/wasmtime/issues/5908
- [ ] Also add a mid-end rule like
(uadd_overflow_trap (uextend x) (uextend y)) ==> (iadd (uextend x) (uextend y))- [ ] Type-based alias analysis for Wasm GC: https://github.com/bytecodealliance/wasmtime/issues/9348
- [ ] Escape analysis for Wasm GC: https://github.com/bytecodealliance/wasmtime/issues/9349
- [ ] Reuse linear memories and their optimized bounds checks for Wasm GC heaps: https://github.com/bytecodealliance/wasmtime/issues/9350
```[tasklist]Tasks
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9352
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9350
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9349
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9348
~~~
fitzgen edited issue #9351:
- [ ] Speed up getting and setting
funcrefs inside GC objects: https://github.com/bytecodealliance/wasmtime/issues/9347- [ ] Const fold through
uadd_overflow_trap/trap{z,nz}insts that show up frequently in GC heap accesses: https://github.com/bytecodealliance/wasmtime/issues/5908
- [ ] Also add a mid-end rule like
(uadd_overflow_trap (uextend x) (uextend y)) ==> (iadd (uextend x) (uextend y))- [ ] Type-based alias analysis for Wasm GC: https://github.com/bytecodealliance/wasmtime/issues/9348
- [ ] Escape analysis for Wasm GC: https://github.com/bytecodealliance/wasmtime/issues/9349
- [ ] Reuse linear memories and their optimized bounds checks for Wasm GC heaps: https://github.com/bytecodealliance/wasmtime/issues/9350
```[tasklist]Tasks
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9352
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9350
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9349
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9348
- [ ] https://github.com/bytecodealliance/wasmtime/issues/5908
~~~
fitzgen edited issue #9351:
This is a tracking issue collecting all of our ideas for improving Wasm GC performance and potential optimizations we could implement.
```[tasklist]
Tasks
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9347
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9352
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9350
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9349
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9348
- [ ] https://github.com/bytecodealliance/wasmtime/issues/5908
- [ ] Const fold through
uadd_overflow_trap/trap{z,nz}insts that show up frequently in GC heap accesses. Depends on https://github.com/bytecodealliance/wasmtime/issues/5908- [ ] Also add a mid-end rule like
(uadd_overflow_trap (uextend x) (uextend y)) ==> (iadd (uextend x) (uextend y)). Depends on https://github.com/bytecodealliance/wasmtime/issues/5908~~~
fitzgen edited issue #9351:
This is a tracking issue collecting all of our ideas for improving Wasm GC performance and potential optimizations we could implement.
```[tasklist]
Tasks
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9347
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9352
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9350
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9349
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9348
- [ ] https://github.com/bytecodealliance/wasmtime/issues/5908
- [ ] Const fold through
uadd_overflow_trap/trap{z,nz}insts that show up frequently in GC heap accesses. Depends on https://github.com/bytecodealliance/wasmtime/issues/5908- [ ] Also add a mid-end rule like
(uadd_overflow_trap (uextend x) (uextend y)) ==> (iadd (uextend x) (uextend y)). Depends on https://github.com/bytecodealliance/wasmtime/issues/5908- [ ] Use bulk
memcpy-style APIs to implementarray.copywhen possible and do GC barriers inline when not possible~~~
fitzgen edited issue #9351:
This is a tracking issue collecting all of our ideas for improving Wasm GC performance and potential optimizations we could implement.
```[tasklist]
Tasks
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9347
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9352
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9350
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9349
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9348
- [ ] https://github.com/bytecodealliance/wasmtime/issues/5908
- [ ] Const fold through
uadd_overflow_trap/trap{z,nz}insts that show up frequently in GC heap accesses. Depends on https://github.com/bytecodealliance/wasmtime/issues/5908- [ ] Also add a mid-end rule like
(uadd_overflow_trap (uextend x) (uextend y)) ==> (iadd (uextend x) (uextend y)). Depends on https://github.com/bytecodealliance/wasmtime/issues/5908- [ ] Use bulk
memcpy-style APIs to implementarray.copywhen possible and do GC barriers inline when not possible- [ ] Expose type registry's supertypes arrays to Wasm, so it can do the O(1) subtype checks inline
~~~
fitzgen edited issue #9351:
This is a tracking issue collecting all of our ideas for improving Wasm GC performance and potential optimizations we could implement.
```[tasklist]
Tasks
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9347
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9352
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9350
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9349
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9348
- [ ] https://github.com/bytecodealliance/wasmtime/issues/5908
- [ ] Const fold through
uadd_overflow_trap/trap{z,nz}insts that show up frequently in GC heap accesses. Depends on https://github.com/bytecodealliance/wasmtime/issues/5908- [ ] Also add a mid-end rule like
(uadd_overflow_trap (uextend x) (uextend y)) ==> (iadd (uextend x) (uextend y)). Depends on https://github.com/bytecodealliance/wasmtime/issues/5908- [ ] Use bulk
memcpy-style APIs to implementarray.copywhen possible and do GC barriers inline when not possible- [ ] Expose type registry's supertypes arrays to Wasm, so it can do the O(1) subtype checks inline
- [ ] Propagate
trapzbackwards fromref.castinto the branch-y instance-of check that it emits. Similar for the jumps inside abr_on_cast[_fail]'s instance-of check. See https://github.com/bytecodealliance/wasmtime/pull/9437#discussion_r1795656924 for details. Alternatively, clean this stuff up in the mid-end: https://github.com/bytecodealliance/wasmtime/issues/6106~~~
fitzgen edited issue #9351:
This is a tracking issue collecting all of our ideas for improving Wasm GC performance and potential optimizations we could implement.
```[tasklist]
Tasks
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9347
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9352
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9350
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9349
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9348
- [ ] https://github.com/bytecodealliance/wasmtime/issues/5908
- [ ] Const fold through
uadd_overflow_trap/trap{z,nz}insts that show up frequently in GC heap accesses. Depends on https://github.com/bytecodealliance/wasmtime/issues/5908- [ ] Also add a mid-end rule like
(uadd_overflow_trap (uextend x) (uextend y)) ==> (iadd (uextend x) (uextend y)). Depends on https://github.com/bytecodealliance/wasmtime/issues/5908- [ ] Use bulk
memcpy-style APIs to implementarray.copywhen possible and do GC barriers inline when not possible- [ ] Expose type registry's supertypes arrays to Wasm, so it can do the O(1) subtype checks inline
- [ ] Propagate
trapzbackwards fromref.castinto the branch-y instance-of check that it emits. Similar for the jumps inside abr_on_cast[_fail]'s instance-of check. See https://github.com/bytecodealliance/wasmtime/pull/9437#discussion_r1795656924 for details. Alternatively, clean this stuff up in the mid-end: https://github.com/bytecodealliance/wasmtime/issues/6106- [ ] Speed up
call_indirectin the face of subtyping. Much of this can be addressed by letting Wasm to the O(1) subtype checks inline, but it is still additional work to be done on everycall_indirectvs MVP wasm. We should investigate inline caches and such again.~~~
fitzgen commented on issue #9351:
See also https://github.com/WebAssembly/gc/issues/565 for potential benchmarks.
alexcrichton added the wasm-proposal:gc label to Issue #9351.
fitzgen edited issue #9351:
This is a tracking issue collecting all of our ideas for improving Wasm GC performance and potential optimizations we could implement.
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9347
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9352
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9350
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9349
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9348
- [ ] https://github.com/bytecodealliance/wasmtime/issues/5908
- [ ] Const fold through
uadd_overflow_trap/trap{z,nz}insts that show up frequently in GC heap accesses. Depends on https://github.com/bytecodealliance/wasmtime/issues/5908- [ ] Also add a mid-end rule like
(uadd_overflow_trap (uextend x) (uextend y)) ==> (iadd (uextend x) (uextend y)). Depends on https://github.com/bytecodealliance/wasmtime/issues/5908- [ ] Use bulk
memcpy-style APIs to implementarray.copywhen possible and do GC barriers inline when not possible- [ ] Expose type registry's supertypes arrays to Wasm, so it can do the O(1) subtype checks inline
- [ ] Propagate
trapzbackwards fromref.castinto the branch-y instance-of check that it emits. Similar for the jumps inside abr_on_cast[_fail]'s instance-of check. See https://github.com/bytecodealliance/wasmtime/pull/9437#discussion_r1795656924 for details. Alternatively, clean this stuff up in the mid-end: https://github.com/bytecodealliance/wasmtime/issues/6106- [ ] Speed up
call_indirectin the face of subtyping. Much of this can be addressed by letting Wasm to the O(1) subtype checks inline, but it is still additional work to be done on everycall_indirectvs MVP wasm. We should investigate inline caches and such again.
fitzgen edited issue #9351:
This is a tracking issue collecting all of our ideas for improving Wasm GC performance and potential optimizations we could implement.
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9347
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9352
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9350
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9349
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9348
- [x] https://github.com/bytecodealliance/wasmtime/issues/5908
- [ ] Const fold through
uadd_overflow_trap/trap{z,nz}insts that show up frequently in GC heap accesses. Depends on https://github.com/bytecodealliance/wasmtime/issues/5908- [ ] Also add a mid-end rule like
(uadd_overflow_trap (uextend x) (uextend y)) ==> (iadd (uextend x) (uextend y)). Depends on https://github.com/bytecodealliance/wasmtime/issues/5908- [ ] Use bulk
memcpy-style APIs to implementarray.copywhen possible and do GC barriers inline when not possible- [ ] Expose type registry's supertypes arrays to Wasm, so it can do the O(1) subtype checks inline
- [ ] Propagate
trapzbackwards fromref.castinto the branch-y instance-of check that it emits. Similar for the jumps inside abr_on_cast[_fail]'s instance-of check. See https://github.com/bytecodealliance/wasmtime/pull/9437#discussion_r1795656924 for details. Alternatively, clean this stuff up in the mid-end: https://github.com/bytecodealliance/wasmtime/issues/6106- [ ] Speed up
call_indirectin the face of subtyping. Much of this can be addressed by letting Wasm to the O(1) subtype checks inline, but it is still additional work to be done on everycall_indirectvs MVP wasm. We should investigate inline caches and such again.
fitzgen edited issue #9351:
This is a tracking issue collecting all of our ideas for improving Wasm GC performance and potential optimizations we could implement.
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9347
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9352
- [x] https://github.com/bytecodealliance/wasmtime/issues/9350
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9349
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9348
- [x] https://github.com/bytecodealliance/wasmtime/issues/5908
- [ ] Const fold through
uadd_overflow_trap/trap{z,nz}insts that show up frequently in GC heap accesses. Depends on https://github.com/bytecodealliance/wasmtime/issues/5908- [ ] Also add a mid-end rule like
(uadd_overflow_trap (uextend x) (uextend y)) ==> (iadd (uextend x) (uextend y)). Depends on https://github.com/bytecodealliance/wasmtime/issues/5908- [ ] Use bulk
memcpy-style APIs to implementarray.copywhen possible and do GC barriers inline when not possible- [ ] Expose type registry's supertypes arrays to Wasm, so it can do the O(1) subtype checks inline
- [ ] Propagate
trapzbackwards fromref.castinto the branch-y instance-of check that it emits. Similar for the jumps inside abr_on_cast[_fail]'s instance-of check. See https://github.com/bytecodealliance/wasmtime/pull/9437#discussion_r1795656924 for details. Alternatively, clean this stuff up in the mid-end: https://github.com/bytecodealliance/wasmtime/issues/6106- [ ] Speed up
call_indirectin the face of subtyping. Much of this can be addressed by letting Wasm to the O(1) subtype checks inline, but it is still additional work to be done on everycall_indirectvs MVP wasm. We should investigate inline caches and such again.
fitzgen edited issue #9351:
This is a tracking issue collecting all of our ideas for improving Wasm GC performance and potential optimizations we could implement.
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9347
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9352
- [x] https://github.com/bytecodealliance/wasmtime/issues/9350
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9349
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9348
- [x] https://github.com/bytecodealliance/wasmtime/issues/5908
- [ ] Const fold through
uadd_overflow_trap/trap{z,nz}insts that show up frequently in GC heap accesses. Depends on https://github.com/bytecodealliance/wasmtime/issues/5908- [ ] Also add a mid-end rule like
(uadd_overflow_trap (uextend x) (uextend y)) ==> (iadd (uextend x) (uextend y)). Depends on https://github.com/bytecodealliance/wasmtime/issues/5908- [ ] Use bulk
memcpy-style APIs to implementarray.copywhen possible and do GC barriers inline when not possible- [ ] Expose type registry's supertypes arrays to Wasm, so it can do the O(1) subtype checks inline
- [x] Propagate
trapzbackwards fromref.castinto the branch-y instance-of check that it emits. Similar for the jumps inside abr_on_cast[_fail]'s instance-of check. See https://github.com/bytecodealliance/wasmtime/pull/9437#discussion_r1795656924 for details. Alternatively, clean this stuff up in the mid-end: https://github.com/bytecodealliance/wasmtime/issues/6106- [ ] Speed up
call_indirectin the face of subtyping. Much of this can be addressed by letting Wasm to the O(1) subtype checks inline, but it is still additional work to be done on everycall_indirectvs MVP wasm. We should investigate inline caches and such again.
fitzgen edited issue #9351:
This is a tracking issue collecting all of our ideas for improving Wasm GC performance and potential optimizations we could implement.
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9347
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9352
- [x] https://github.com/bytecodealliance/wasmtime/issues/9350
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9349
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9348
- [x] https://github.com/bytecodealliance/wasmtime/issues/5908
- [ ] Const fold through
uadd_overflow_trap/trap{z,nz}insts that show up frequently in GC heap accesses. Depends on https://github.com/bytecodealliance/wasmtime/issues/5908- [x] Also add a mid-end rule like
(uadd_overflow_trap (uextend x) (uextend y)) ==> (iadd (uextend x) (uextend y)). Depends on https://github.com/bytecodealliance/wasmtime/issues/5908- [ ] Use bulk
memcpy-style APIs to implementarray.copywhen possible and do GC barriers inline when not possible- [ ] Expose type registry's supertypes arrays to Wasm, so it can do the O(1) subtype checks inline
- [x] Propagate
trapzbackwards fromref.castinto the branch-y instance-of check that it emits. Similar for the jumps inside abr_on_cast[_fail]'s instance-of check. See https://github.com/bytecodealliance/wasmtime/pull/9437#discussion_r1795656924 for details. Alternatively, clean this stuff up in the mid-end: https://github.com/bytecodealliance/wasmtime/issues/6106- [ ] Speed up
call_indirectin the face of subtyping. Much of this can be addressed by letting Wasm to the O(1) subtype checks inline, but it is still additional work to be done on everycall_indirectvs MVP wasm. We should investigate inline caches and such again.
fitzgen edited issue #9351:
This is a tracking issue collecting all of our ideas for improving Wasm GC performance and potential optimizations we could implement.
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9347
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9352
- [x] https://github.com/bytecodealliance/wasmtime/issues/9350
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9349
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9348
- [x] https://github.com/bytecodealliance/wasmtime/issues/5908
- [x] Const fold through
uadd_overflow_trap/trap{z,nz}insts that show up frequently in GC heap accesses. Depends on https://github.com/bytecodealliance/wasmtime/issues/5908- [x] Also add a mid-end rule like
(uadd_overflow_trap (uextend x) (uextend y)) ==> (iadd (uextend x) (uextend y)). Depends on https://github.com/bytecodealliance/wasmtime/issues/5908- [ ] Use bulk
memcpy-style APIs to implementarray.copywhen possible and do GC barriers inline when not possible- [ ] Expose type registry's supertypes arrays to Wasm, so it can do the O(1) subtype checks inline
- [x] Propagate
trapzbackwards fromref.castinto the branch-y instance-of check that it emits. Similar for the jumps inside abr_on_cast[_fail]'s instance-of check. See https://github.com/bytecodealliance/wasmtime/pull/9437#discussion_r1795656924 for details. Alternatively, clean this stuff up in the mid-end: https://github.com/bytecodealliance/wasmtime/issues/6106- [ ] Speed up
call_indirectin the face of subtyping. Much of this can be addressed by letting Wasm to the O(1) subtype checks inline, but it is still additional work to be done on everycall_indirectvs MVP wasm. We should investigate inline caches and such again.
fitzgen edited issue #9351:
This is a tracking issue collecting all of our ideas for improving Wasm GC performance and potential optimizations we could implement.
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9347
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9352
- [x] https://github.com/bytecodealliance/wasmtime/issues/9350
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9349
- [ ] https://github.com/bytecodealliance/wasmtime/issues/9348
- [x] https://github.com/bytecodealliance/wasmtime/issues/5908
- [x] Const fold through
uadd_overflow_trap/trap{z,nz}insts that show up frequently in GC heap accesses. Depends on https://github.com/bytecodealliance/wasmtime/issues/5908- [x] Also add a mid-end rule like
(uadd_overflow_trap (uextend x) (uextend y)) ==> (iadd (uextend x) (uextend y)). Depends on https://github.com/bytecodealliance/wasmtime/issues/5908- [ ] Use bulk
memcpy-style APIs to implementarray.copywhen possible and do GC barriers inline when not possible- [ ] Expose type registry's supertypes arrays to Wasm, so it can do the O(1) subtype checks inline
- [ ] Propagate
trapzbackwards fromref.castinto the branch-y instance-of check that it emits. Similar for the jumps inside abr_on_cast[_fail]'s instance-of check. See https://github.com/bytecodealliance/wasmtime/pull/9437#discussion_r1795656924 for details. Alternatively, clean this stuff up in the mid-end: https://github.com/bytecodealliance/wasmtime/issues/6106- [ ] Speed up
call_indirectin the face of subtyping. Much of this can be addressed by letting Wasm to the O(1) subtype checks inline, but it is still additional work to be done on everycall_indirectvs MVP wasm. We should investigate inline caches and such again.
Last updated: Dec 06 2025 at 06:05 UTC