Closed Bug 1772506 Opened 2 years ago Closed 2 years ago

Add frame pointer to all arguments rectifier frames

Categories

(Core :: JavaScript Engine: JIT, task, P3)

task

Tracking

()

RESOLVED FIXED
103 Branch
Tracking Status
firefox103 --- fixed

People

(Reporter: jandem, Assigned: jandem)

References

Details

Attachments

(3 files)

On 32-bit x86 we store the frame pointer in the rectifier frame, but not on other platforms. We can simplify some code by doing this for all architectures, and we want to do this anyway for bug 1771085.

There are some subtle differences between x86 and x64, in particular on x64 we were
adding 1 to argc immediately and on x86 we did this later.

This patch makes the x64 code more similar to x86, but because x86 has the pushed
frame pointer already, there are still some different computations. That is addressed
more in the next patch.

We were doing this on 32-bit x86 but not other platforms.

This complicates the epilogue code a bit because we have to pop the frame pointer
now, but once we have frame pointers everywhere we can simplify this to the standard
epilogue sequence.

On x64, replace the use of r9 with FramePointer. This is now very similar to x86.

Depends on D148252

Because the saved frame pointer is not yet in the frame layout, add the offset
manually. We can likely simplify this later.

Depends on D148253

Pushed by jdemooij@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/19f06e78b888 part 1 - Change x64 arguments rectifier code to be a bit more like x86. r=iain https://hg.mozilla.org/integration/autoland/rev/ee6c5abd46a2 part 2 - Add frame pointer to all rectifier frames. r=iain https://hg.mozilla.org/integration/autoland/rev/69459b18dd50 part 3 - Push frame pointer at the start of the rectifier code. r=iain
Status: ASSIGNED → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → 103 Branch
Blocks: 1773446
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: