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)

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)

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: nobody → edwsmith
Priority: -- → P2
Target Milestone: --- → flash10.2
Blocks: 583955
Attached patch (v1) proof of concept (obsolete) — Splinter Review
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)
Severity: normal → minor
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)
Whiteboard: PACMAN, has-patch
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+
Attachment #465509 - Flags: review?(wmaddox) → review+
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → FIXED
patch includes: typedef HashMap<LIns*, nanojit::BitSet*> LabelBitSet;
Blocks: 590482
No longer blocks: 583955
Blocks: 583955
Flags: flashplayer-bug+
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: