Closed
Bug 1409548
Opened 7 years ago
Closed 7 years ago
Wasm baseline: Do not push and pop on the CPU stack
Categories
(Core :: JavaScript Engine: JIT, defect, P3)
Tracking
()
RESOLVED
FIXED
Tracking | Status | |
---|---|---|
firefox58 | --- | affected |
People
(Reporter: lth, Assigned: lth)
References
Details
Currently the baseline compiler pushes and pops on the CPU stack whenever it needs to flush its virtual value stack. This will not work all that well for ARM64, which needs a 16-byte aligned stack pointer pretty much always (*), while most pushing and popping will be in 8-byte increments. In addition there are some existing inefficiencies in the baseline compiler where we have to execute code along a control flow edge to bring the CPU stack into line with what the target of the control flow expects.
Having a frame with a fixed SP, where the entire frame is allocated on function entry and we just store into and load from the frame at known SP offsets, takes care of both of those problems. It will have a different layout from what we have now, though, so the change is not completely trivial.
(*) The SP must be 16-byte aligned whenever it's used for memory references, which in baseline code is very, very frequently.
Updated•7 years ago
|
Priority: -- → P3
Assignee | ||
Comment 1•7 years ago
|
||
This is pretty much a non-issue after bug 1419034 landed, see the additional patch filed on that bug. Keeping this open, though, to track the issue until we've verified that this works properly on arm64.
Assignee | ||
Updated•7 years ago
|
Status: ASSIGNED → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•