Closed
Bug 1104199
Opened 10 years ago
Closed 10 years ago
Optimize LUnbox codegen on x64
Categories
(Core :: JavaScript Engine: JIT, defect)
Core
JavaScript Engine: JIT
Tracking
()
RESOLVED
FIXED
mozilla37
People
(Reporter: jandem, Assigned: jandem)
References
(Blocks 1 open bug)
Details
Attachments
(1 file)
3.21 KB,
patch
|
sunfish
:
review+
|
Details | Diff | Splinter Review |
The micro-benchmark in bug 624299 is slower on x64 than on x86, apparently due to Unbox:Int32 instructions for the 3 arguments. For each argument we do:
[MoveGroup]
movq 0x68(%rsp), %rax
[Unbox:Int32]
movl %eax, %eax
This patch changes useRegisterAtStart to useAtStart for infallible unbox instructions, so that we have just:
[Unbox:Int32]
movl 0x68(%rsp), %eax
With this patch the numbers are about the same as with a 32-bit build.
Attachment #8527826 -
Flags: review?(sunfish)
Comment 1•10 years ago
|
||
Comment on attachment 8527826 [details] [diff] [review]
Patch
Review of attachment 8527826 [details] [diff] [review]:
-----------------------------------------------------------------
::: js/src/jit/x64/CodeGenerator-x64.cpp
@@ +90,2 @@
> MUnbox *mir = unbox->mir();
> + LAllocation *input = unbox->getOperand(LUnbox::Input);
This could be moved down along with the initialization of the result variable. And it could to do the ToOperand, instead of having it done on each use.
Updated•10 years ago
|
Attachment #8527826 -
Flags: review?(sunfish) → review+
Assignee | ||
Comment 2•10 years ago
|
||
https://hg.mozilla.org/integration/mozilla-inbound/rev/6d64e1e46eb1
(In reply to Dan Gohman [:sunfish] from comment #1)
> This could be moved down along with the initialization of the result
> variable. And it could to do the ToOperand, instead of having it done on
> each use.
Done.
Comment 3•10 years ago
|
||
Status: ASSIGNED → RESOLVED
Closed: 10 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla37
You need to log in
before you can comment on or make changes to this bug.
Description
•