JSGarbageCollect should not synchronously call collectAllGarbage(). Instead, it should notify the GCActivityCallback that it has abandoned an object graph, which will set the timer to run at some point in the future that JSC can decide according to its own policies.
Created attachment 138139 [details]
Comment on attachment 138139 [details]
Let's fix the FIXME by taking advantage of our new callback, like so:
- Cancel the GC timer at the start of collection (rename didCollect to willCollect)
- If collection causes a didAbandonObjectGraph, it can now start the timer, which will, in fact, cause another collection later.
In the same patch, you can remove the isBusy() check, since didAbandonObjectGraph is safe to call while the heap is busy.
Committed r114771: <http://trac.webkit.org/changeset/114771>