Created attachment 626050 [details]
incremental GC profile
With bug 750834 Score Rush is pretty smooth (17ms to render a frame). The GC pauses are 35ms which is also pretty ok. However, if you turn on igc, things are observably worse.
The per-frame profile attached also looks a lot worse: lots of recompilation, lots of interpreter time. It almost looks like there is a bug involving igc where we throw away/recompile too much.
(To view the profile, you'll need to use billm's viewer.)
Created attachment 626052 [details]
non-incremental GC profile
This is w/ igc turned off. Looks much prettier.
Created attachment 626537 [details] [diff] [review]
We were setting the preserve flag in BeginMarkPhase, which is called once per incremental GC, and then unsetting it in ~AutoGCSession, which is called at the end of every slice. So in later slices, code was getting thrown away.
Wow, that was fast! With this patch, I can see the biggest GC slice (the first) is only 16.6ms and the whole frame renders in 28.4ms; big improvement over non-incremental.