Closed
Bug 740563
Opened 13 years ago
Closed 13 years ago
IonMonkey: Disentangle virtual registers from instruction id's
Categories
(Core :: JavaScript Engine, defect)
Core
JavaScript Engine
Tracking
()
RESOLVED
FIXED
People
(Reporter: jandem, Assigned: jandem)
References
(Blocks 1 open bug)
Details
Attachments
(1 file)
28.50 KB,
patch
|
dvander
:
review+
|
Details | Diff | Splinter Review |
Currently we assign a (new) virtual register to instructions without any defs, it's used as instruction id. This can be convenient sometimes, but the problem is that regalloc has to iterate over all virtual registers a number of times (and it allocates some memory for each virtual register).
We should try changing this so that virtual registers are only used for actual defs or temps, and see if it helps 3d-cube and audio-beat-detection.
Assignee | ||
Updated•13 years ago
|
Assignee | ||
Comment 1•13 years ago
|
||
The patch moves the LSRA movegroups from VirtualRegister to a new class, InstructionData. This was necessary and it simplifies LSRA a bit: an instruction can have multiple virtual registers so associating movegroups with instructions is more natural. It also allows us to remove one of the three movegroups.
Number of virtual registers for the same function, before/after:
32-bit:
3d-cube : 2032 -> 1318
beat-detection: 3806 -> 2089
64-bit:
3d-cube : 1710 -> 996
beat-detection: 3207 -> 1494
Small performance win and should use less memory.
Attachment #610867 -
Flags: review?(dvander)
Updated•13 years ago
|
Attachment #610867 -
Flags: review?(dvander) → review+
Assignee | ||
Comment 2•13 years ago
|
||
https://hg.mozilla.org/projects/ionmonkey/rev/49d78eb068df
Thanks for the quick review!
Status: ASSIGNED → RESOLVED
Closed: 13 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•