4
edits
Line 1: | Line 1: | ||
Objective: Implement Generational Garbage collection in Spider Monkey. <Some goal based off V8 performance delta % on Earley Boyer benchmark> | |||
Accountable: Naveed | |||
Responsible: Terrence, Jon, and Steve, evilpie Ms2ger | |||
Consulted: bhackett billm | Consulted: bhackett billm | ||
Informed: Product Marketing | Informed: Product Marketing | ||
Generational GC - Bug 619558 | |||
Steps | |||
Exact Rooting done in JS Shell [Bug 753203] - 12 weeks started | Exact Rooting done in JS Shell [Bug 753203] - 12 weeks started | ||
Rooting Analysis on TinderBox (sfink) - 3 weeks | Rooting Analysis on TinderBox (sfink) - 3 weeks | ||
Line 30: | Line 31: | ||
http://people.mozilla.org/~bhackett/rootingHazards.html | http://people.mozilla.org/~bhackett/rootingHazards.html | ||
http://people.mozilla.org/~bhackett/gcFunctions.html | http://people.mozilla.org/~bhackett/gcFunctions.html | ||
JIT Integration with post barriers - 4 weeks, parallelized | |||
IonMonkey [Bug 831506] - 1 week (bhackett) | |||
JaegerMonkey [Bug 764876] - 2 days (bhackett) | JaegerMonkey [Bug 764876] - 2 days (bhackett) | ||
Baseline JIT [Bug 831507] - | Baseline JIT [Bug 831507] - <ask jandem/djvj for an estimate> | ||
Generation Garbage Collection in the Shell | |||
Implement prototype algorithm (terrence) - 1 week | |||
This is a potential milestone: we would need to build it and test it on TBPL similar to how |r| works now -- |GGCJS|. | This is a potential milestone: we would need to build it and test it on TBPL similar to how |r| works now -- |GGCJS|. | ||
Exactly Root the Browser [Bug 831379] - 10 weeks | |||
This is a potential milestone: we would turn on exact rooting for release FF at this point. We would not get a performance boost from this (necessarily), but it would lock in our work to this point. | |||
Performance Tuning - 4 weeks (This should probably start asap) | |||
Test against V8 Earley-Boyer benchmark. | |||
Also v8 deltablue, raytrace | Also v8 deltablue, raytrace | ||
Implement a Nursery [Bug 706885] - 1 week | Implement a Nursery [Bug 706885] - 1 week | ||
We may need to Implement Bill’s Pools/Zones idea to get the nursery to the requisite perf - 6 weeks | We may need to Implement Bill’s Pools/Zones idea to get the nursery to the requisite perf - 6 weeks | ||
Refactor code to avoid rooting on hot paths and keep rooter overhead acceptable - | Refactor code to avoid rooting on hot paths and keep rooter overhead acceptable - ??? weeks (start early) (bhackett) | ||
Re-implement HashTable rekeying | |||
We undid this code because it was a perf regression and was still a bit buggy. (terrence) - 3 weeks | |||
Make the Post Barrier Verifier Green in the browser [Bug 764882] | |||
Investigate how long it will take to do generational barriers - 1 week | |||
We may need to rewrite the maps in xpconnect and the browser in terms of HashTable: this could be a bunch of work. | |||
Make JS_IsAboutToBeFinalized indirect [Bug 765432] - 10 weeks | |||
OTHER | |||
Should we establish a new benchmark specifically for GGC. (sfink votes yes) | |||
What would it measure? there are multiple goals, e.g. throughput/MMU/pause time | |||
Should we make it a public benchmark? | Should we make it a public benchmark? | ||
What workloads should we consider? | What workloads should we consider? | ||
Line 70: | Line 72: | ||
Compacting GC - Revisit in Febuary/March - 1 Month | Compacting GC - Revisit in Febuary/March - 1 Month | ||
Delayed until exact rooting is fully done. We can add this in if we have time in the schedule that we cannot parallelize. | Delayed until exact rooting is fully done. We can add this in if we have time in the schedule that we cannot parallelize. | ||
Risks | |||
Team is responsible for many top crashers | |||
External rooting API has not been designed | External rooting API has not been designed | ||
GGC algorithm has not been decided on - it may not be faster | GGC algorithm has not been decided on - it may not be faster | ||
JSD1 exact rooting is lurking | JSD1 exact rooting is lurking | ||
edits