Initial implementation of inline allocation of WasmStructObjects that have no OOL storage
Categories
(Core :: JavaScript: WebAssembly, enhancement, P1)
Tracking
()
People
(Reporter: jseward, Assigned: jseward)
References
Details
Attachments
(2 files, 7 obsolete files)
|
38.51 KB,
patch
|
Details | Diff | Splinter Review | |
|
60.78 KB,
patch
|
Details | Diff | Splinter Review |
This bug is intended to build on bug 1833614, which simplifies the
struct-allocation paths. In particular the aim is to produce a first
attempt at an inline version of Instance::structNewInitIL,
Instance::structNewUninitIL and WasmStructObject::createStructIL.
| Assignee | ||
Comment 1•2 years ago
|
||
This is a precursor patch. It separates out into a new C++ function, the
code I am thinking to inline; then uses that as a fast path and falls back
to the existing allocation functions if that doesn't work out. This facilitates
experimenting/tuning/investigating possible fast-paths before going to
the trouble of actually inlining them.
Even if we never bother with the inlining itself, this patch -- when applied
on top of those of bug 1833614 -- gives, for Barista-3 -O3, a 5.2% reduction
in first-frame time, and a 6.0% reduction in frame-average time, for Ion.
So even as it stands (after cleaning up!) it would be a worthwhile improvement.
| Assignee | ||
Comment 2•2 years ago
|
||
Cleaned up and commented version of the previous patch.
| Assignee | ||
Comment 3•2 years ago
|
||
Now with a check for realm()->hasAllocationMetadataBuilder() and
minor further cleanups.
| Assignee | ||
Comment 4•2 years ago
|
||
Now with additional low-level implementation (near-machine-level) C++,
suitable as a starting point for code generation. Also with testing on
x86_64-linux, x86-linux and arm64-linux.
| Assignee | ||
Comment 5•2 years ago
|
||
Now with correct handling of GC zeal mode bits.
No actual inline code yet though.
| Assignee | ||
Comment 6•2 years ago
|
||
Revision 11 of the patch.
| Assignee | ||
Comment 7•2 years ago
|
||
Precursor hot-path-in-C++ patch, revision 12.
| Assignee | ||
Comment 8•2 years ago
|
||
First version of a patch that actually generates the hot path inline.
Very far from being landable.
| Assignee | ||
Comment 9•2 years ago
|
||
Somewhat improved inline code generation, plus it works for both
x86_64-linux and i686-linux. Is worth around 1%-2% on Barista-3 -O3,
that is to say, not much, considering that the C++ precursor patches
bring a 5+% improvement without any inline code generation.
Updated•2 years ago
|
Comment 10•1 year ago
|
||
This was fixed in bug 1861261.
Description
•