Closed
Bug 585433
Opened 14 years ago
Closed 14 years ago
Skip deadvars_analyze in non-looping methods.
Categories
(Tamarin Graveyard :: Baseline JIT (CodegenLIR), defect, P2)
Tamarin Graveyard
Baseline JIT (CodegenLIR)
Tracking
(Not tracked)
RESOLVED
FIXED
Q3 11 - Serrano
People
(Reporter: edwsmith, Assigned: edwsmith)
References
Details
(Whiteboard: PACMAN, has-patch)
Attachments
(1 file, 1 obsolete file)
12.11 KB,
patch
|
wmaddox
:
review+
rreitmai
:
review+
|
Details | Diff | Splinter Review |
Methods that have no back edges should not require iteration in deadvars. We
could do a single backwards sweep (deadvars_kill only) to save time.
Furthermore this sweep could be concurrent with code generation to avoid
traversing LIR one extra time. (*very* similar to nanojit::StackFilter).
Stats from a selection of 175 SWF's:
methods: 48645
cyclic: 5111 (11%)
total deadvars passes: 104745 (2.15 per method)
If we skip deadvars_analyze in the 43534 acyclic methods, its a 42% reduction in the # of passes, down to 61211 (1.26 per method).
Deadvars is 14% of the overall jit+verify time in the same run; 42% off would reduce overall jit+verify time by 6%, with deadvars contributing 9%.
Assignee | ||
Updated•14 years ago
|
Assignee: nobody → edwsmith
Assignee | ||
Updated•14 years ago
|
Priority: -- → P2
Target Milestone: --- → flash10.2
Assignee | ||
Comment 1•14 years ago
|
||
This cuts pure JIT time of my as3-big-100 swfs from 27sec to 26sec, about 3% speedup. (that's about 700MB of compressed swf content)
Assignee | ||
Updated•14 years ago
|
Severity: normal → minor
Assignee | ||
Comment 2•14 years ago
|
||
Only minor changes since v1:
* renamed haveLoops to hasBackedes
* set hasBackedges when we emit actual LIR backedges, which should be more robust than setting the flag based on indirect conditions.
Attachment #465383 -
Attachment is obsolete: true
Attachment #465509 -
Flags: review?(wmaddox)
Attachment #465509 -
Flags: review?(rreitmai)
Assignee | ||
Updated•14 years ago
|
Whiteboard: PACMAN, has-patch
Comment 3•14 years ago
|
||
Comment on attachment 465509 [details] [diff] [review]
(v2) Skip deadvars_analyze in non-looping methods.
Looks good; small nit, typedef HashMap<LIns*,nanojit::BitSet*> to something would improve readability.
Attachment #465509 -
Flags: review?(rreitmai) → review+
Updated•14 years ago
|
Attachment #465509 -
Flags: review?(wmaddox) → review+
Assignee | ||
Comment 4•14 years ago
|
||
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → FIXED
Assignee | ||
Comment 5•14 years ago
|
||
patch includes:
typedef HashMap<LIns*, nanojit::BitSet*> LabelBitSet;
Assignee | ||
Updated•14 years ago
|
Updated•14 years ago
|
Flags: flashplayer-bug+
You need to log in
before you can comment on or make changes to this bug.
Description
•