Previously, the CSE would sometimes lie and say that it changed nothing. But that can lead to humorous inconsistencies. For example: a: GetGlobalVar(thingy) b: CheckStructure(@a, 0x1234) c: GetGlobalVar(thingy) d: CheckStructure(@c, 0x2345) This code will never complete, since there is no way that 'thingy' can simultaneously pass both structure checks. But previously, we wouldn't realize this, because even though the CSE would modify the code to be: a: GetGlobalVar(thingy) b: CheckStructure(@a, 0x1234) c: Phantom() d: CheckStructure(@a, 0x2345) It wouldn't let the optimization fixpoint know, and the optimization fixpoint wouldn't rerun the CFA. Currently this "bug" is asymptomatic but it would become symptomatic if we started relying more the CFA results of things like CheckStructure.
Created attachment 159257 [details] the patch
Comment on attachment 159257 [details] the patch r=me
Landed in http://trac.webkit.org/changeset/125964