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
funcref
s 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
funcref
s 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
funcref
s 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
funcref
s 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
funcref
s 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
funcref
s 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
funcref
s 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
funcref
s 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.copy
when 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.copy
when 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.copy
when 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
trapz
backwards fromref.cast
into 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.copy
when 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
trapz
backwards fromref.cast
into 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_indirect
in 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_indirect
vs 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.
Last updated: Dec 23 2024 at 12:05 UTC