The DFG JIT, like the old JIT, may perform put_by_id transition caching. In a transition cache, code is emitted that changes the structure of an object, so long as the object has a specific previous structure, and it has a specific prototype chain. The code contains immediates referencing the old structure, the new structure, and the prototype chain. Hence, the code is only correct if the GC keeps all of these objects (structures and prototypes) alive. To do so, the DFG JIT must inform the GC that it has pinned those objects. Currently, the DFG JIT does not do this, which results in spurious crashes on websites like gmail.com.
Created attachment 100557 [details]
Comment on attachment 100557 [details]
Clearing flags on attachment: 100557
Committed r90854: <http://trac.webkit.org/changeset/90854>
All reviewed patches have been landed. Closing bug.