JM: use fastcall and parameters for stubcall immediates, not VMFrame::Arguments

RESOLVED FIXED

Status

()

Core
JavaScript Engine
RESOLVED FIXED
8 years ago
4 years ago

People

(Reporter: luke, Unassigned)

Tracking

Firefox Tracking Flags

(Not tracked)

Details

(Reporter)

Description

8 years ago
(Recording JS pit discussion for future implementation)
Currently, to pass opcode immediates from JITed code to stub calls, we store them to the VMFrame::Arguments union, where they are read by the stub call.  A faster way would be to take advantage of the various platforms' fastcall conventions, which will allow us to pass, at least, the VMFrame* and the first immediate via register.  While there may be more than one immediate, this case is rare, so we can just use the simple general strategy that stub calls declare all their immediates as parameters, without any use of the VMFrame.
I needed to do part of this for bug 549522, so stubs are now fastcall on x86.

http://hg.mozilla.org/users/danderson_mozilla.com/jaegermonkey/rev/a02be28344a2
Summary: JM: use fast call and parameters for stubcall immediates, not VMFrame::Arguments → JM: use fastcall and parameters for stubcall immediates, not VMFrame::Arguments
I did the rest of this in a few commits last week. Unfortunately, it wasn't a measurable perf win on either ARM or x86/64.
Status: NEW → RESOLVED
Last Resolved: 8 years ago
Resolution: --- → FIXED
Perhaps not surprising?  32-bit x86 is the only platform I know
of where the default calling convention does not pass the first
2 args in registers anyway.
You need to log in before you can comment on or make changes to this bug.